Apakah ada sesuatu di luar sana untuk pengarsipan file secara paralel?
Tar itu hebat, tapi saya tidak menggunakan arsip kaset, dan lebih penting bagi saya bahwa pengarsipan terjadi dengan cepat (dengan kompresi seperti bzip2) karena saya punya smp.
performance
tar
archive
supercheetah
sumber
sumber
zip
mampu menangani direktori: |tar
arsip, dan kemudian kompres paket menggunakan kompresor berkas (sepertigzip
,pigz
, dll). Anda dapat melakukannya dalam dua langkah, tetapi juga dalam satu langkah tunggal , karena mereka dapat bekerja pada aliran data dari input / output standar. Hasilnya sangat miripzip
, tetapi lebih fleksibel.Jawaban:
Saya pikir Anda mencari pbzip2:
Lihat beranda proyek atau periksa repositori paket favorit Anda.
sumber
pigz
danpxz
untuk implementasi paralel darigzip
danxz
. Anda dapat mengompres menggunakan perintah liketar c dir | pigz -c > dir.tar.gz
dan decompress usingpigz -cd dir.tar.gz | tar xf -
.tar -cf dir.tar.gz -I pigz dir
dantar -xf dir.tar.gz -I pigz
. Juga dixz
utas: gunakanXZ_OPT=-T0 tar -cJf dir.tar.gz dir
danXZ_OPT=-T0 tar -xJf dir.tar.gz
.7zip dapat berjalan di banyak utas saat diberi
-mmt
bendera, tetapi hanya saat mengompresi ke arsip 7z, yang menawarkan kompresi hebat tetapi umumnya lebih lambat daripada zip untuk membuat arsip. Lakukan sesuatu seperti ini:sumber
OP bertanya tentang pengarsipan paralel, bukan kompresi paralel.
Jika bahan sumber berasal dari sistem file di mana direktori / file yang berbeda mungkin berada di disk yang berbeda, atau bahkan disk cepat tunggal yang melebihi kecepatan input alat kompresi, maka memang dapat bermanfaat untuk memiliki beberapa aliran input masuk ke lapisan kompresi.
Pertanyaan yang bermakna adalah, seperti apa output dari arsip paralel? Ini bukan lagi hanya satu file deskriptor /
stdout
, tetapi file deskriptor per utas.Contoh dari hal ini sejauh ini adalah mode dump paralel Postgresql
pg_dump
, di mana ia dibuang ke direktori, dengan utas yang bekerja di atas set tabel yang akan dicadangkan (antrian kerja w / beberapa utas yang mengonsumsi antrian).Saya tidak yakin ada pengarsip paralel paralel yang arus utama. Ada peretasan untuk Solaris Tar untuk digunakan di ZFS: http://www.maier-komor.de/mtwrite.html
Ada beberapa alat cadangan khusus yang berhasil menjalankan beberapa utas, tetapi banyak lagi yang hanya membagi beban kerja dengan direktori pada tingkat tinggi.
sumber
ganti
pigz
dengan program kompresi paralel favorit Anda. Alasan penggunaannyatar
adalah karena dapat menyimpan izin pemilik, grup,. Metadata itu sering berguna (misalnya, memulihkan pohon dir dalam sistem yang kompleks).sumber
-I
opsi, yang sama dengan--use-compress-program
. Jadi, misalnyatar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."
dapat diterapkan ke opsi multi-threaded menggunakanpigz
astar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."
. Ini adalah jawaban terbaik, paling tepat, IMHO. Terima kasih @uDude! :)pigz adalah implementasi paralel dari gzip, tetapi hanya dapat benar-benar menggunakan banyak prosesor untuk kompresi, bukan dekompresi.
sumber
pigz
sebenarnya tampaknya dapat menggunakan beberapa utas juga saat dekompresi. Coba bandingkan keluaran daritime tar xf dir.tar.gz
dantime pigz -cd dir.tar.gz | tar xf -
(pada CPU 4-core saya, ini membutuhkan waktu kurang dari separuh waktu).time
pada pipeline hanya akan mengatur waktu perintah pertama. Daripigz
dokumentasi : "Dekompresi tidak dapat diparalelkan, setidaknya tidak tanpa aliran deflate yang disiapkan secara khusus untuk tujuan itu. Akibatnya, pigz menggunakan utas tunggal (utas utama) untuk dekompresi, tetapi akan membuat tiga utas lainnya untuk dibaca, menulis, dan memeriksa perhitungan, yang dapat mempercepat dekompresi dalam beberapa keadaan. "tar
hanyalah sebuah format arsip yang sangat baik dalam menduplikasi file secara tepat dan menjaga struktur direktori dan atribut file asli. TAR sangat baik untuk membuat cadangan, karena semuanya terpelihara. Saya gunakanpbzip2
untuk mengompresi arsip tar yang saya gunakan untuk cadangan sistem dengan hasil yang sangat bagus.perintah ini harus melakukan triknya.
pbzip2
dapat diganti dengan utilitas kompresi yang berbeda, tetapi berhati-hatilah, kompresi LZMA (seperti pxz) menggunakan TON RAM ketika mengompresi / mendekompresi file besar (saya mencoba menjalankan 8 utas dengan 8GB RAM, dan pxz mulai bertukar ke disk).sumber
Pesaing lainnya adalah
lbzip2
. Ini sangat mirip dengan pbzip2sumber
Sejauh kompresi dipertimbangkan,
xz
karena sekitar versi 5.2 mendukung kompresi paralel melalui-T
opsi.sumber