Cách tiếp cận phổ biến
Có tùy chọn cho tar
chương trình:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Bạn có thể sử dụng phiên bản đa luồng của tiện ích lưu trữ hoặc máy nén.
Hầu hết các trình lưu trữ đa luồng phổ biến là pigz (thay vì gzip) và pbzip2 (thay vì bzip2). Ví dụ:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
Archiver phải chấp nhận -d. Nếu tiện ích thay thế của bạn không có tham số này và / hoặc bạn cần chỉ định các tham số bổ sung, thì hãy sử dụng đường ống (thêm tham số nếu cần):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
Đầu vào và đầu ra của singlethread và multithread tương thích. Bạn có thể nén bằng phiên bản đa luồng và giải nén bằng phiên bản singlethread và ngược lại.
p7zip
Để nén p7zip, bạn cần một tập lệnh shell nhỏ như sau:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Lưu nó dưới dạng 7zhelper.sh. Dưới đây là ví dụ về cách sử dụng:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
Về hỗ trợ XZ đa luồng. Nếu bạn đang chạy phiên bản 5.2.0 trở lên của XZ Utils, bạn có thể sử dụng nhiều lõi để nén bằng cách đặt -T
hoặc --threads
đến một giá trị phù hợp thông qua biến môi trường XZ_DEFAULTS (ví dụ XZ_DEFAULTS="-T 0"
).
Đây là một mảnh của người đàn ông cho phiên bản 5.1.0alpha:
Nén và giải nén đa luồng chưa được triển khai, vì vậy tùy chọn này hiện không có hiệu lực.
Tuy nhiên, điều này sẽ không hoạt động để giải nén các tệp chưa được nén khi bật luồng. Từ người đàn ông cho phiên bản 5.2.2:
Giải nén theo luồng chưa được thực hiện. Nó sẽ chỉ hoạt động trên các tệp chứa nhiều khối có thông tin kích thước trong các tiêu đề khối. Tất cả các tệp được nén ở chế độ đa luồng đều đáp ứng điều kiện này, nhưng các tệp được nén ở chế độ một luồng không ngay cả khi --block-size = size được sử dụng.
Biên dịch lại với sự thay thế
Nếu bạn xây dựng tar từ các nguồn, thì bạn có thể biên dịch lại với các tham số
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Sau khi biên dịch lại tar với các tùy chọn này, bạn có thể kiểm tra đầu ra của trợ giúp của tar:
$ tar --help | grep "lbzip2\|plzip\|pigz"
-j, --bzip2 filter the archive through lbzip2
--lzip filter the archive through plzip
-z, --gzip, --gunzip, --ungzip filter the archive through pigz