내부에서 파일을 압축하는 방법


20

하드 디스크 사용량이 90 % 인 머신이 있습니다. 500 개 이상의 로그 파일을 더 작은 새 파일로 압축하고 싶습니다. 그러나 하드 디스크는 너무 작아서 원본 파일과 압축 파일을 모두 보관할 수 없습니다.

따라서 필요한 것은 모든 로그 파일을 하나씩 새 파일로 하나씩 압축하여 압축 한 각 원본을 삭제하는 것입니다.

Linux에서 어떻게 할 수 있습니까?


답변:


18

gzip또는 bzip2파일을 압축하고 압축되지 않은 파일을 자동으로 제거합니다 (기본 동작).

그러나 압축 프로세스 동안 두 파일이 모두 존재한다는 점을 명심하십시오.

로그 파일 (예 : 텍스트가 포함 된 파일)을 압축하려는 경우 bzip2텍스트 파일에 대한 비율이 더 좋기 때문에을 선호 할 수 있습니다.

bzip2 -9 myfile       # will produce myfile.bz2

비교 및 예 :

$ ls -l myfile
-rw-rw-r-- 1 apaul apaul 585999 29 april 10:09 myfile

$ bzip2 -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 115780 29 april 10:09 myfile.bz2

$ bunzip2 myfile.bz2

$ gzip -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 146234 29 april 10:09 myfile.gz

@Jjoao가 코멘트에서 나에게 말한 것처럼 업데이트 는 흥미롭게도 xz기본 옵션을 사용하여 일반 파일에 대해 가장 좋은 비율을 갖는 것으로 보입니다.

$ xz -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 109384 29 april 10:09 myfile.xz

자세한 내용은 다음과 같이 다양한 도구에 대한 흥미로운 벤치 마크입니다. http://binfalse.de/2011/04/04/comparison-of-compression/

위의 예 -9에서는 최고의 압축 비율을 사용하지만 데이터를 압축하는 데 필요한 시간이 비율보다 더 중요한 경우에는 사용하지 않는 것이 좋습니다 (낮은 옵션, 즉 -1그 사이의 무언가 사용).


2
+1; 궁금한 점이 있으 xz myfile십니까?
JJoao

2
@JJoao 감사합니다! 흥미 롭습니다. 나는 익숙하지 xz않지만 지금 고려할 것입니다. 내 게시물 업데이트를 참조하십시오.
apaul

3
하지 마십시오 xz -9. 압축 비율을 크게 향상시키지 않으면 서 압축 / 압축 해제에 필요한 메모리를 크게 증가시킵니다. 맨 페이지는 "강조 적으로 강조한다"고 말합니다. "특히 gzip (1) 및 bzip2 (1)에서 자주 사용하는 것과 같은 모든 작업에 -9를 맹목적으로 사용하는 것은 좋지 않습니다 ." 기본값 xz -6은 충분하며 보통 xz -0/ xz -1보다 압축이 좋습니다 gzip -9.
user49740

@ user49740 당신이 맞아요. 나는 거의 사용하지 않지만 -9압축 비율에 대한 벤치 마크를 "동일한 규모로"만들고 싶기 때문에 여기서 사용했습니다. 그러나 다시 한번, 당신은 완전히 옳습니다. 맹목적으로 사용하는 것은 나쁜 생각 -9입니다.
apaul

15

나는 혼자서 타르 솔루션을 알아 냈습니다.
대상 파일로 압축 한 후 단일 파일을 삭제합니다.
그러나 압축 속도는 그리 빠르지 않습니다. 명령은 다음과 같습니다.

tar -zcvf my_log.tar.gz *.log --remove-files

1
좋은 타르. +1
Aaron Hall

1

@apaul을 보완하기 위해 파일을 개별적으로 압축한다는 점을 강조합니다.

 bzip2 *.log.*

(bzip2를 gzip, xz 또는 가장 좋아하는 파일 zip으로 대체)이 중요 할 수 있습니다.

이렇게 하면 압축 파일을 계속보고 ( bzcat file.bz2), 검색 ( bzgrep file.bz2), 편집 ( vi file.bz2)하고 , 필요한 경우 이전 파일을 제거 할 수 있습니다.


1

tar의 BSD 버전 에서이 작업을 수행하려고했습니다. 이 경우 --remove-files 옵션을 사용할 수 없습니다. 내가 끝내고 일한 것은 다음과 같습니다.

find folder_to_tar -type f -exec tar --append --file=output_tar_file.tar {} \; -exec rm -v {} \;

그건 그렇고, BSD 버전은 MacOS를 사용하는 경우 기본적으로 얻는 것입니다
pgilmon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.