Cara tercepat untuk mengekstrak tar.gz


42

Apakah ada cara mengekstrak file tar.gz lebih cepat daripada tar -zxvf filenamehere?

Kami memiliki file besar, dan mencoba mengoptimalkan operasi.


2
Apakah Anda menemukan bahwa $ tar -zxvfmetode ini terikat IO atau CPU?
EEAA

1
Percayalah pada CPU, bagaimana saya bisa memeriksanya?
Justin

5
Tidak terkait langsung, tetapi 'z' belum diperlukan sejak 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah

Jawaban:


57

pigz adalah versi paralel dari gzip. Meskipun hanya menggunakan utas tunggal untuk dekompresi, ia memulai 3 utas tambahan untuk membaca, menulis, dan memeriksa perhitungan. Hasil Anda mungkin bervariasi tetapi kami telah melihat peningkatan yang signifikan dalam dekompresi beberapa set data kami. Setelah Anda menginstal pigz, file tar dapat diekstraksi dengan:

pigz -dc target.tar.gz | tar xf -


11
+1. FWIW, Anda juga bisa menuliskannya sebagai tar -xvf --use-compress-program=pigz filenamehere. ( -zJumlah hingga --use-compress-program=gzip.) Atau, Anda bahkan gzipdapat menjadi symlink pigz, dan tetap menggunakan -zxvf.
ruakh

2
@ruakh, saya harus -xfmengejarnya --use-compress-program=pigz, atau saya mendapat kesalahan. Untuk beberapa alasan, itu tidak lebih cepat daripada menggunakan gzipsekalipun.
jonderry

Karena bzip2ada pbzip2( puntuk paralel). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

Apakah ada cara untuk menggunakan pvperintah untuk menunjukkan progres, atau equivilant, sementara juga menggunakan --use-compress-program=pigzflag? Selama kompresi, saya bisa melakukannya gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, tetapi tidak yakin bagaimana melakukan ini selama untar / uncompression.
Stefan Lasiewski

13

jika ada banyak banyak file kecil di bola tar, batalkan parameter 'v', coba lagi!


3
Saya tidak pernah menggunakan param -v. Tidak tahu mengapa orang membutuhkan banyak kebisingan di konsol.
Eimantas

9
@Eimantas Ketika Anda menghapus sesuatu yang berisi banyak file multi-gigabyte, Anda akan menginginkan beberapa indikasi kemajuan. :)
Michael Hampton

@TimHughes: itu benar-benar hebat untuk diketahui, silakan kirim sebagai jawaban terpisah!
smci

Michael Hampton jika Anda memiliki file multi-gigabyte tetapi dicampur dengan daftar besar file kecil Anda memiliki alasan yang baik untuk tidak menggunakan -v, dalam tes lokal saya itu membuat tar sangat lambat khususnya jika Anda memiliki tar yang berjalan di server jauh via terminal, apa yang saya lakukan adalah menonton direktori du -s sehingga saya bisa melihat direktori bertambah ...
Luciano Andress Martini

Mungkin layak digunakan --checkpoint=NUMBER( menampilkan pesan kemajuan setiap NUMBER catatan ) alih-alih -v.
Stefan Lasiewski

6

Jika Anda ingin melihat kemajuan, gunakan sesuatu seperti pv. Berikut ini sebuah Contoh:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
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.