Saya sering direktori gzip di tempat kerja. Apa yang biasanya saya lakukan adalah
tar -zcvf file.tar.gz /path/to/directory
Apakah ada cara untuk menentukan level kompresi di sini? Saya ingin menggunakan kompresi terbaik bahkan jika dibutuhkan lebih banyak waktu untuk kompres.
linux
compression
tar
gzip
Lazer
sumber
sumber
top
dan melihatnya menggunakan CPU mana saja antara 200% -400 $.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:
Atau Anda bisa menggunakan:
-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.
sumber
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, karenagzip
menambahkan ekstensi ".gz".f -
? jika tidak ada file, maka itu stdin / outVersi 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.
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.
sumber
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 keduanyaf
dan-
.Dan seperti yang dinyatakan oleh
gzip
halaman manual, jika tidak ada file yang ditentukan gzip akan dikompres dari input standar. Tidak perlu untuk-
digzip
panggilan.Opsi
--best
(setara dengan-9
) menetapkan tingkat kompresi tertinggi.sumber
xz
danpixz
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.
sumber
-I
, mereka akan mencoba memperlakukan semuanya sebagai nama program untuk exec, dan karenanya gagal. Setidaknya pada tar 1,29 di Debian Stretch, ini berfungsi.Dan tentu saja tar yang diturunkan macOS bsd harus berbeda:
sumber