Biasanya gzip atau tar tidak dapat membuat "tar.gz terkecil absolut". Ada banyak utilitas kompresi yang dapat memampatkan ke format gz. Saya telah menulis skrip bash " gz99 " untuk mencoba gzip
, 7z
dan advdef
untuk mendapatkan file terkecil. Untuk menggunakan ini untuk membuat menjalankan file sekecil mungkin:
tar c path/to/data | gz99 file.gz
The advdef
utilitas dari AdvanceCOMP biasanya memberikan file terkecil, tapi juga kereta (dengan gz99
cek utilitas yang belum rusak file sebelum menerima output dari advdef
). Untuk menggunakan advdef
secara langsung, buat file.tar.gz namun Anda suka. Lalu lari:
advdef -z -4 file.tar.gz
Ini akan membuat file gz standar yang dapat dibaca oleh gzip dan tar seperti biasa, hanya sedikit lebih kecil. Ini tentang hal terbaik yang dapat Anda lakukan dengan format gz.
Karena Anda baru saja mengetahui bahwa tar dapat mengompres, dan tidak mengatakan mengapa Anda menginginkan file ".tar.gz" terkecil, Anda mungkin tidak menyadari bahwa ada format yang lebih efisien yang dapat digunakan dengan file tar, seperti xz. Secara umum, beralih ke format yang berbeda dapat memberikan peningkatan kompresi yang jauh lebih baik daripada memutar-mutar opsi gzip. Kerugian utama xz adalah bahwa hal itu tidak biasa seperti gzip sehingga orang yang Anda kirimi file mungkin harus menginstal paket baru. Ini juga cenderung sedikit lebih lambat, terutama saat mengompresi. Jika ini tidak masalah bagi Anda, dan Anda benar-benar menginginkan file tar terkecil, coba:
tar cv path/to/data | xz -9 > file.tar.xz
Versi tar modern, misalnya di Ubuntu 13.10, secara otomatis mendeteksi file terkompresi. Jadi, bahkan jika Anda menggunakan kompresi xz Anda masih dapat mendekompres seperti biasa:
tar xvf file.tar.xz
Untuk memberikan gambaran singkat bagaimana perbandingan utilitas kompresi ini, pertimbangkan efek kompresi patch-3.1.1 dari kernel linux:
utility cpu format size(bytes)
gzip -9 0.02s gz 105,628
advdef -2 0.07s gz 102,619
7z -mx=9 -tgzip 0.42s gz 102,297
advdef -3 0.55s gz 102,290
advdef -4 0.75s gz 101,956
xz -9 0.03s xz 91,064
xz -3e 0.15s xz 90,996
Dalam contoh sepele ini, kita melihat bahwa untuk mendapatkan gz terkecil kita perlu advdef (meskipun 7z -tgzip hampir sama bagusnya dan jauh lebih sedikit buggy). Kita juga melihat bahwa beralih ke xz memberi kita lebih banyak ruang daripada mencoba memeras sebagian besar format gz lama, tanpa kompresi yang terlalu lama.