Câu trả lời:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
giả sử bạn đang sử dụng bash. Nói chung, đặt biến môi trường GZIP thành "-9" và chạy tar bình thường.
Ngoài ra - nếu bạn thực sự muốn nén tốt nhất, đừng sử dụng gzip. Sử dụng lzma hoặc 7z.
Và khi sử dụng gzip (đó là ý tưởng tốt vì nhiều lý do khác nhau) hãy xem xét sử dụng pigz
chương trình chứ không phải gzip
.
GZIP_OPT
, việc sử dụng nên giống nhau.
Thay vì sử dụng cờ gzip cho tar, hãy gzip các tệp theo cách thủ công sau quá trình tar, sau đó bạn có thể chỉ định mức nén cho chương trình gzip:
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
Hoặc bạn có thể sử dụng:
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
-9 trong dòng lệnh gzip báo cho gzip sử dụng mức nén tối đa có thể (mặc định là -6).
Chỉnh sửa: Đã sửa lỗi dòng lệnh ống dựa trên nhận xét @depesz.
file.tar
, vì gzip
thêm phần mở rộng ".gz".
f -
? nếu không có tập tin thì đó là stdin / out
Các phiên bản hiện đại của tar hỗ trợ định dạng lưu trữ xz (GNU tar, từ 1.22 năm 2009, Busybox kể từ 1.17.0 năm 2010).
Nó dựa trên lzma2 , giống như phiên bản 7-Zip của gz . Điều này cho phép nén tốt hơn nếu bạn ổn với yêu cầu cần hỗ trợ xz.
tar -Jcvf file.tar.xz /path/to/directory
Tôi mới phát hiện ra ở đây (về cơ bản là một bản sao của câu hỏi này, nhưng trong stackexchange Unix) cũng có một biến môi trường XZ_OPT = -9 để kiểm soát mức nén XZ tương tự như GZIP trong bài khác.
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
Đây là giải pháp thứ hai của Matrix Mole, nhưng hơi ngắn lại:
Khi gọi tar, tùy chọn f
nói rằng đầu ra là một tệp. Đặt nó thành -
(stdout) làm cho tar ghi đầu ra của nó thành thiết bị xuất chuẩn, đó là hành vi mặc định không có cả hai f
và -
.
Và như đã nêu trong gzip
trang man, nếu không có tệp nào được chỉ định thì gzip sẽ nén từ đầu vào tiêu chuẩn. Không có nhu cầu -
trong gzip
cuộc gọi.
Tùy chọn --best
(tương đương -9
) đặt mức nén cao nhất.
xz
và pixz
quá. Đó là một cách tuyệt vời để kiểm soát số lượng luồng được sử dụng để nén song song mà không phải tạo tệp .tar trung gian. Như vậytar -cv /path/to/dir | pixz -p4 > output.tpxz
Ngoài ra còn có tùy chọn để chỉ định chương trình nén bằng -I. Điều này có thể bao gồm tùy chọn mức nén.
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
-I
, họ sẽ cố gắng coi toàn bộ là một tên chương trình để thực thi và do đó thất bại. Ít nhất là với tar 1.29 trong Debian Stretch, điều này không hoạt động.
top
và xem nó bằng cách sử dụng bất cứ nơi nào giữa CPU 200% -400 $.