Apa metode kompresi tercepat untuk sejumlah besar file?


14

Saya perlu mengkompres direktori dengan sekitar 350.000 file yang cukup kecil yang berjumlah total sekitar 100GB. Saya menggunakan OSX dan saat ini menggunakan alat "Kompres" standar yang mengubah direktori ini menjadi file .zip. Apakah ada cara yang lebih cepat untuk melakukan ini?


Anda mungkin tidak dapat mengalahkan tar, karena itu tidak benar-benar kompres, hanya arsip, tanpa opsi spesifik yang memungkinkannya. Sebagai jawaban, saya ingin sekali melihat bukti, tidak ada pendapat ...
Daniel Beck

1
Tergantung berapa banyak kompresi yang Anda inginkan.
ta.speot.is

1
Saya akhirnya menggunakan tar dan karena alasan kecepatan belum mencoba mengompresnya. Itu bisa selesai pada waktunya untuk apa saya membutuhkannya. Terima kasih!
Spike

@DanielBeck, Masalah dengan tar adalah bahwa mereka tidak menampilkan pohon direktori. Jadi, bahkan untuk mendapatkan "tampilan", kita perlu membuka zip seluruh tar itu. Apakah ada alternatif tar yang menunjukkan tampilan direktori?
Pacerier

Jawaban:


15

Untuk direktori saya akan menggunakan tarpiped bzip2dengan max-kompresi.

cara mudah untuk pergi adalah,

tar cfj archive.tar.bz2 dir-to-be-arsipkan / 

Ini berfungsi baik jika Anda tidak bermaksud mengambil set kecil file dari arsip
dan hanya berencana untuk mengekstrak semuanya kapanpun / di mana pun diperlukan.
Namun, jika Anda melakukan ingin mendapatkan satu set kecil file keluar, tidak terlalu buruk.

Saya lebih suka memanggil arsip seperti itu filename.tar.bz2dan mengekstraknya dengan opsi ' xfj'.

Pipa kompresi maksimal terlihat seperti ini,

tar cf - dir-to-be-arsip / | bzip2 -9 -> archive.tar.bz2  
# ^ pipe tarball dari sini ke zip-in ^ ke dalam file arsip. 

Catatan: metode ' bzip2' dan lebih banyak kompresi cenderung lebih lambat gzipdari biasanya ' tar cfz'.

Jika Anda memiliki jaringan yang cepat dan arsip akan ditempatkan pada mesin yang berbeda,
Anda dapat mempercepat dengan pipa di jaringan (secara efektif menggunakan dua mesin bersama-sama).

tar cf - dir / | ssh user @ server "bzip2 -9 -> /target-path/archive.tar.bz2"  
# ^ pipa tarball melalui jaringan ke zip ^ dan arsip di mesin jarak jauh.

Beberapa referensi,

  1. Linux Journal: Compression Tools Compared , 28 Jul 2005
  2. gzip vs. bzip2 , 26 Agustus 2003
  3. Tolok Ukur Cepat: Gzip vs. Bzip2 vs LZMA , 31 Mei 2005

2
Penanya meminta metode tercepat, membeli 100Gb tar akan memakan waktu seumur hidup! Ada satu titik dengan ruang disk yang sangat murah sehingga mengambil ribuan tahun untuk mengeluarkan setiap redundansi yang mungkin terakhir hanyalah pemborosan sumber daya yang tidak masuk akal, kecuali benar-benar diperlukan. Dengan sebagian besar penggunaan disk diambil di ruang sepi, gzipping tar dengan -1 mungkin akan melakukan pekerjaan dengan cukup baik dan memungkinkan pindah ke tugas berikutnya beberapa bulan sebelumnya!
Andy Lee Robinson

Walaupun saya setuju bahwa file 100GB mungkin tidak layak untuk dikompresi secara total, saya tidak berpikir bahwa bzip2 akan memakan waktu lebih lama secara linear untuk 100GB dibandingkan dengan 1GB (katakanlah). Senang melihat beberapa teori atau data untuk menunjukkan kedua cara.
nik

Saya mengerti bahwa kamus bzip2 bersifat adaptif, oleh karena itu kamus ini terus mencari redudansi baru dalam jendela pencariannya hingga akhir file. Tunduk pada homogenitas dari entropi file, itu harus relatif linier. Itu akan menjadi kompresor yang buruk yang menganggap itu memiliki semua yang diperlukan dari awal file untuk dapat mengompres sisanya dengan cepat, tetapi dalam beberapa kasus itu mungkin semua yang diperlukan, meskipun ada cara yang lebih baik untuk menjadi tua daripada bekerja itu keluar secara empiris dengan dataset 100GB!
Andy Lee Robinson

7

Orang ini melakukan riset tentang itu. Tampaknya .zip akan mengkompres file yang lebih besar dengan lebih cepat. Namun, ini menghasilkan salah satu ukuran kompresi terbesar. Sepertinya dia menggunakan utilitas Windows, tapi saya yakin utilitas OSX hampir sama dioptimalkan.

Berikut adalah situs web yang luar biasa di mana banyak utilitas kompresi telah dijadikan patokan untuk kecepatan di atas banyak file. Ada banyak tes lain di situs yang bisa Anda lihat untuk menentukan utilitas terbaik untuk Anda.

Sebagian besar kecepatan berkaitan dengan program yang Anda gunakan. Saya telah menggunakan utilitas 7zip untuk Windows, dan saya menemukan itu sangat cepat. Namun, mengompresi banyak file membutuhkan waktu lama, jadi saya hanya membiarkannya semalaman. Atau Anda bisa saja menaruhnya dan tidak mengompresnya ... Secara pribadi saya benci membuka arsip besar jadi saya akan berhati-hati jika itu yang ingin Anda lakukan.


0

Saya lebih suka menggunakan

tar cf - dir-to-be-archived/ | bzip2 -9 - > archive.tar.bz2

untuk memindahkan file ke server lain dan menutupinya secara bersamaan


1
Yang sudah disarankan dalam jawaban teratas oleh @nik. Tidak perlu menduplikasi untuk penekanan, cukup pilih jawaban yang lain atau tambahkan komentar jika Anda memiliki sesuatu yang substantif tetapi tidak ingin memberikan jawaban yang terlibat. ; o)
pbhj
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.