Metode kompresi terbaik?

53

Saya ingin mengompres folder 16GB, tetapi apa metode terbaik? tar.gz? tar.bz2 rar? 7z? Apakah arsip akan lebih kecil jika saya pertama kali dikompresi dalam suatu metode, lalu salin arsip terkompresi ke folder baru, kemudian dikompresi ulang dalam beberapa metode lain? Saya perlu membuatnya pas di DVD (output mungkin 8.5GB, tidak ingat) tetapi menempatkan "4370 MB" membuat file terkompresi menjadi bagian 2,5GB.

BTW, apa metode kompresi default di Ubuntu?

Amanda
sumber

Jawaban:

70

Standarnya adalah gz. Hasil terbaik yang saya dapatkan 7z.

Berikut adalah hasil untuk wadah virtualbox 1,4 Gb:

masukkan deskripsi gambar di sini

Kompresi terbaik - ukuran dalam MB:

7z 493
rar 523
bz2 592
lzh 607
gz 614
Z 614
zip 614
.arj 615
lzo 737
kebun binatang 890

Sumber

masukkan deskripsi gambar di sini

Pasang

 sudo apt-get install p7zip-full
Rinzwind
sumber
Terima kasih, saya sudah menginstal 7z dan rar melalui Software Center. Saya akan coba dengan 7z.
Amanda
1
Dari mana hasil ini berasal? Untuk setiap algoritma, rasio kompresi dan kecepatan sangat bergantung pada apa yang Anda coba kompres. Cobalah mengompresi beberapa data yang berasal /dev/urandom: Anda akan mendapatkan hasil berbeda di setiap percobaan. Atau coba /dev/zero: bzip2 adalah pemenangnya (untuk rasio).
Andrea Corbellini
1
@AndreaCorbellini tautannya ada di jawaban jadi klik !? dan seperti yang saya katakan: ini didasarkan pada wadah virtualbox 1.4. Saya setuju bahwa kompresi sangat tergantung pada file apa itu tetapi dari beberapa tahun pengalaman 7z tampaknya lebih baik untuk file yang saya cenderung (kebanyakan file perangkat lunak dan data biner)
Rinzwind
1
@Rinzwind: Saya benar-benar minta maaf, saya tidak melihat tautan Sumber .
Andrea Corbellini
1
@AndreaCorbellini tidak apa-apa;) mari kita berharap amanda melaporkan kembali hasilnya: +
Rinzwind
14

Pertanyaan ini sudah sangat lama, tetapi mungkin seseorang menemukan solusi ini berguna:

Gunakan rzip, setelah tar. Pertama memampatkan 900 MB blok data besar menggunakan metode kamus, dan kemudian menyerahkan data yang dibersihkan ke bzip2. Ini jauh lebih cepat daripada alat kompresi kuat lainnya ( bzip2, lzma), dan beberapa file yang dikompres lebih baik daripada bzip2atau lzma.

Ya, gzadalah alat kompresi default di Linux. Ini cepat, dan meskipun usianya sudah memberikan hasil yang sangat baik dalam mengompresi file teks seperti kode sumber. Alat standar lain adalah bzip2, meskipun jauh lebih lambat.

Tambahan: lrzip lebih baru dan memperluas prinsip rzip. Bahkan mendukung ukuran blok tanpa batas, dan pilihan metode kompresi (LZMA, Bzip2, Gzip, LZO, ZPAQ atau tidak sama sekali). LZMA adalah standarnya. Untuk cadangan atau jika Anda berbagi banyak data dengan pengguna Linux / BSD lainnya, ini bisa sangat berguna.

pengguna258532
sumber
Saya pikir maksud Anda adalah 900 kB blok? 900 MB akan menjadi agak besar ...
Byte Commander
1
Ini sebenarnya adalah 900 MB. Lihat en.wikipedia.org/wiki/Rzip
user258532
2

Saya memilih untuk LZMA. Ini memiliki overhead byte terkecil dan memiliki rasio kompresi yang kuat. Perbandingan antara ZIP dan LZMA: Saya telah menghasilkan dua file seq.txtdengan kode PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

yang memegang blok berulang 0,9 digit ~ 1 MB data dan rnd.txtdengan kode PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

yang memegang blok acak 0,9 digit ~ 1 MB data.

Hasil kompresi:

  • seq.txt, rnd.txt - 1100000 byte
  • seq.txt.zip - 2502 byte
  • rnd.txt.zip - 515957 byte
  • seq.txt.lzma - 257 byte
  • rnd.txt.lzma - 484939 byte

Rasio kompresi:

  • ZIP -> "seq.txt" -> 99.772%
  • ZIP -> "rnd.txt" -> 53.094%
  • LZMA -> "seq.txt" -> 99.976%
  • LZMA -> "rnd.txt" -> 55.914%

Jadi LZMA telah mengompresi data berurutan sebesar 0,2% lebih efektif daripada ZIP
dan data acak 2,8% lebih efektif daripada ZIP.

Pasti LZMA menang!

Agnius Vasiliauskas
sumber