Mengapa file tar.xz yang dibuat dengan Python lebih kecil daripada file yang dibuat dengan tar bawaan?
(superuser.com)-
File yang dibuat dengan
tardi macOS bisa menjadi 15 kali lebih besar dibanding file yang dibuat dengan fungsitarfilePython -
Penyebab: BSD/GNU
tarmemasukkan file ke dalam arsip terkompresi tanpa urutan tertentu, sehingga rasio kompresi bisa menurun tergantung jenis filenya
→ fungsi tarfile Python menggunakan pengurutan sebagai nilai bawaan
- Dalam GNU
tar, file juga bisa dimasukkan dengan urutanname/inodemenggunakan opsi--sort→ jika pengurutan diterapkan, rasio kompresinya menjadi sama
4 komentar
Saya agak tidak paham, tapi kenapa rasio kompresi berubah ketika pengurutan diterapkan? Rasio kompresi untuk tiap file secara individual seharusnya sama, kan.
Algoritme yang digunakan adalah Deflate. Algoritme ini menyimpan data yang sebelumnya digunakan untuk kompresi di dalam sliding window. Jika kali ini 10 byte diproses, maka 10 byte yang baru diproses itu ditambahkan ke bagian akhir sliding window, dan ukuran sliding window dikelola tetap.
Jika ditemukan isi yang sama dengan yang ada di dalam sliding window, kompresi dilakukan dengan menuliskan LLD (Literal, Length, Distance) sebagai gantinya. Distance menunjukkan mulai dari posisi mana isi yang sama itu berada di sliding window, Length adalah panjang bagian yang sama di sliding window, dan Literal adalah karakter pertama yang tidak sama.
Karena Deflate sangat bergantung pada apa yang tersimpan di dalam sliding window, apakah konten yang mirip baru saja terlihat menjadi hal yang penting. Jika sebelumnya sudah melihat file yang serupa, ada kemungkinan kompresinya bisa menjadi lebih baik.
Silakan lihat slide berikut untuk mengetahui bagaimana cara kompresinya dilakukan. (
gzipjuga berbasis Deflate.)https://speakerdeck.com/dalinaum/…
Karena isi file-file dengan nama yang sama/mirip di dalam folder yang sama cenderung serupa, tingkat kompresinya kemungkinan akan lebih tinggi.
Sepertinya maksudnya adalah bahwa saat mengompresi, cakupan pencarian untuk menemukan kemiripan semacam ini tidak terlalu luas, jadi kalau file-file diurutkan, file-file yang mirip ini akan terkumpul dan kemungkinan terkompresi lebih baik akan lebih tinggi.