많은 파일에 가장 빠른 압축 방법은 무엇입니까?


14

총 약 100GB에 이르는 약 350,000 개의 매우 작은 파일로 디렉토리를 압축해야합니다. OSX를 사용하고 있으며 현재이 디렉토리를 .zip 파일로 변환하는 표준 "Compress"도구를 사용하고 있습니다. 더 빠른 방법이 있습니까?


실제로 압축하지 않고 아카이브 만 가능하므로 특정 옵션을 사용하지 않으면 tar를 이길 수 없습니다. 답변에서, 나는 증거를보고 싶다. 의견이 없다 ...
— Daniel Beck

1
원하는 압축 정도에 따라 다릅니다.
— ta.speot.은 (는)

1
나는 tar를 사용하여 끝내고 속도 때문에 아직 압축하려고 시도하지 않았습니다. 내가 필요한 것을 제 시간에 완성 할 수있었습니다. 감사!
— Spike

@DanielBeck, tar의 문제점은 디렉토리 트리를 표시하지 않는다는 것입니다. 따라서 "보기"를 얻으려면 전체 타르를 압축 해제해야합니다. 디렉토리보기를 표시하는 tar에 대한 대안이 있습니까?
— Pacerier

답변:


15

디렉토리의 경우 max-compression과 함께 tar파이프를 사용합니다 bzip2.

가는 간단한 방법은

tar cfj archive.tar.bz2 dir-to-be-archived / 

아카이브에서 작은 파일 세트를 가져 오지 않고
필요할 때마다 모든 것을 추출 하려고 계획하는 경우에 효과적 입니다.
그러나, 당신이 경우에 할 수 는 너무 나쁜, 파일의 작은 집합을 얻을합니다.

이러한 아카이브를 호출 filename.tar.bz2하고 ' xfj'옵션으로 추출 하는 것을 선호합니다 .

최대 압축 파이프는 다음과 같습니다.

tar cf-아카이브 될 디렉토리 / | bzip2 -9-> archive.tar.bz2  
# ^ 파이프 타르볼을 여기에서 압축 파일로 아카이브 파일에 넣습니다 ^. 

참고 : ' bzip2'방법과 더 많은 압축은 gzip' tar cfz' 에서 일반보다 느리게 진행 됩니다.

네트워크 속도가 빠르고 아카이브를 다른 머신에 배치
하려는 경우 네트워크에서 파이프를 사용하여 속도를 높일 수 있습니다 (효과적으로 두 머신을 함께 사용).

타르 CF-dir / | ssh user @ server "bzip2 -9-> /target-path/archive.tar.bz2"  
# ^ 네트워크를 통한 파이프 타르볼을 압축하여 ^ 원격 시스템에 보관합니다.

일부 참고 문헌

  1. 리눅스 저널 : 압축 도구 비교 , 2005 년 7 월 28 일
  2. gzip vs. bzip2 , 2003 년 8 월 26 일
  3. 빠른 벤치 마크 : Gzip vs. Bzip2 vs. LZMA , 2005 년 5 월 31 일

2
질문자는 가장 빠른 방법을 요청했는데 100Gb 타르를 압축하는 데 평생이 걸릴 것입니다! 디스크 공간이 너무 저렴하여 가능한 한 모든 중복 비트를 짜내기 위해 이온을 사용하는 것이 절대적으로 필요한 경우를 제외하고는 의미없는 자원 낭비입니다. 대부분의 디스크 사용량이 여유 공간에서 차지하는 경우, tar를 -1로 압축하면 작업을 충분히 수행 할 수 있으며 몇 개월 전에 다음 작업으로 넘어갈 수 있습니다!
— 앤디 리 로빈슨

100GB 파일이 전체를 압축 할 가치가 없다는 데 동의하지만 bzip2가 1GB와 비교하여 100GB에 대해 선형 적으로 더 많은 시간이 걸리지 않을 것이라고 생각합니다. 두 가지 방법을 보여주기 위해 일부 이론이나 데이터를보고 싶습니다.
— nik

bzip2의 사전은 적응 형이므로 검색 창에서 파일 끝까지 새로운 중복성을 지속적으로 찾고 있습니다. 파일 엔트로피의 균일성에 따라 상대적으로 선형이어야합니다. 파일의 시작 부분에서 나머지 부분을 빠르게 압축 할 수 있기 위해 필요한 모든 것이 있다고 가정 한 나쁜 압축기 일 수도 있지만, 경우에 따라 오래된 것보다 더 오래 성장하는 더 좋은 방법이 있지만 필요한 경우도 있습니다. 100GB 데이터 셋으로 경험적으로!
— 앤디 리 로빈슨

7

이 사람 은 그것에 대해 약간의 연구를했습니다. .zip은 더 큰 파일을 더 빨리 압축하는 것으로 보입니다. 그러나 가장 큰 압축 크기 중 하나를 생성합니다. 그는 Windows 유틸리티를 사용하고있는 것처럼 보이지만 OSX의 유틸리티는 거의 최적화되어 있습니다.

다음 은 수많은 압축 유틸리티가 많은 파일의 속도에 대해 벤치마킹 된 훌륭한 웹 사이트입니다. 해당 사이트에 가장 유용한 유틸리티를 결정하기 위해 볼 수있는 다른 많은 테스트가 있습니다.

대부분의 속도는 사용하는 프로그램과 관련이 있습니다. Windows 용 7zip 유틸리티를 사용했는데 매우 빠릅니다. 그러나 많은 파일을 압축하는 데 시간이 오래 걸리므로 밤새도록 보내주십시오. 또는 전체 내용을 압축하고 압축하지 않을 수도 있습니다 ... 개인적으로 큰 아카이브를 압축 해제하는 것을 싫어하므로 원하는 경우 조심해야합니다.


0

나는 사용하는 것을 선호합니다

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

파일을 다른 서버로 옮기고 동시에 덮기


1
@nik의 최고 답변에서 이미 제안 된 것입니다. 강조하기 위해 복제 할 필요가 없습니다. 실질적인 내용이 있지만 관련 답변을 제공하지 않으려면 다른 답변을 찬성하거나 의견을 추가하십시오. ; o)
— pbhj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.