Jawaban:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
dengan asumsi Anda menggunakan bash. Secara umum, atur variabel lingkungan GZIP ke "-9", dan jalankan tar secara normal.
Juga - jika Anda benar-benar menginginkan kompresi terbaik, jangan gunakan gzip. Gunakan lzma atau 7z.
Dan ketika menggunakan gzip (yang merupakan ide bagus karena berbagai alasan pula) pertimbangkan untuk menggunakan pigz
program dan bukan gzip
.
GZIP_OPT
, penggunaannya harus sama.
Alih-alih menggunakan flag gzip untuk tar, gzip file secara manual setelah proses tar, maka Anda dapat menentukan tingkat kompresi untuk program gzip:
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
Atau Anda bisa menggunakan:
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
-9 pada baris perintah gzip memberitahu gzip untuk menggunakan tingkat kompresi maksimum yang dimungkinkan (standarnya adalah -6).
Sunting: Memperbaiki baris perintah pipa berdasarkan komentar @depesz.
file.tar
, karena gzip
menambahkan ekstensi ".gz".
f -
? jika tidak ada file, maka itu stdin / out
Versi tar modern mendukung format arsip xz (GNU tar, sejak 1.22 pada 2009, Busybox sejak 1.17.0 pada 2010).
Ini didasarkan pada lzma2 , seperti versi 7-Zip dari gz . Ini memberikan kompresi yang lebih baik jika Anda baik-baik saja dengan persyaratan membutuhkan dukungan xz.
tar -Jcvf file.tar.xz /path/to/directory
Saya baru saja menemukan di sini (pada dasarnya dupe dari pertanyaan ini, tetapi di Unix stackexchange) bahwa ada juga variabel lingkungan XZ_OPT = -9 untuk mengontrol tingkat kompresi XZ mirip dengan yang GZIP di pos lainnya.
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
Ini adalah solusi kedua Matrix Mole, tetapi sedikit dipersingkat:
Saat memanggil tar, opsi f
menyatakan bahwa output adalah file. Mengaturnya ke -
(stdout) membuat tar menulis outputnya ke stdout yang merupakan perilaku default tanpa keduanya f
dan -
.
Dan seperti yang dinyatakan oleh gzip
halaman manual, jika tidak ada file yang ditentukan gzip akan dikompres dari input standar. Tidak perlu untuk -
di gzip
panggilan.
Opsi --best
(setara dengan -9
) menetapkan tingkat kompresi tertinggi.
xz
dan pixz
juga. Ini adalah cara yang bagus untuk mengontrol jumlah utas yang digunakan untuk kompresi paralel tanpa harus membuat file .tar perantara. Seperti begitutar -cv /path/to/dir | pixz -p4 > output.tpxz
Ada juga opsi untuk menentukan program kompresi menggunakan -I. Ini dapat mencakup opsi tingkat kompresi.
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
-I
, mereka akan mencoba memperlakukan semuanya sebagai nama program untuk exec, dan karenanya gagal. Setidaknya pada tar 1,29 di Debian Stretch, ini berfungsi.
top
dan melihatnya menggunakan CPU mana saja antara 200% -400 $.