디렉토리 트리에서 tar.gz를 실행하는 가장 빠른 방법은 무엇입니까?

디렉토리 트리에서 tar.gz를 실행하는 가장 빠른 방법은 무엇입니까?

다음과 같은 파일이 포함된 디렉터리 트리가 있습니다.

.
|-- 00
|-- 00
|-- 00
|-- 01
|-- 02
|-- 03
|-- 04
|-- 05
[..]
|-- 97
|-- 98
|`-- 99
|-- 01
|-- 00
|-- 01
[...]

각 디렉토리에는 약 200개의 파일이 포함되어 있어서 파일이 너무 많았습니다. 전체 내용을 tar.gz로 만드는 가장 빠른 방법은 무엇입니까? 여러 CPU에 대해 작업을 병렬로 실행할 수 있나요?

답변1

포함할 최상위 디렉터리(또는 디렉터리)를 지정하면 tar모든 하위 디렉터리를 재귀적으로 드릴다운하여 모든 것을 마무리합니다.

tar cvfz output.tar.gz /path/to/top_folder

(@forcefsck가 지적했듯이 객체가 원시 속도인 경우 v터미널에서 해당 옵션을 생략하여 자세한 정보를 줄일 수 있습니다. 모든 파일을 에코하지 않음으로써 터미널과 통신하는 I/O 시간을 조금 절약할 수 있습니다.)

답변2

다음을 통해 --fast옵션의 별칭인 를 gzip으로 전달할 수 있습니다.-1

GZIP=--fast tar czf output.tar.gz /path/to/top_folder

또는

GZIP=-1 tar czf output.tar.gz /path/to/top_folder

일부 환경에서는 이 변수를 GZIP_OPT대체할 수 있습니다 GZIP.

답변3

ext[234] 파일 시스템에서는 dump특히 Maildir과 같은 많은 작은 파일의 경우 tar보다 훨씬 빠릅니다. 또한 동시 압축을 위해 여러 코어를 사용합니다. 1MB 블록 크기에 -b 1024를 사용하는 것이 좋습니다. 이는 기본 10kb 블록 크기보다 훨씬 좋습니다.

답변4

예, Pigz의 경우:

 tar --use-compress-program="pigz --best --recursive" -cf file.tar.gz folder/
 tar -cf file.tar.gz -I pigz folder/

관련 정보