Il modo più veloce per estrarre tar.gz


42

Esiste un modo per estrarre un file tar.gz più velocemente di tar -zxvf filenamehere?

Abbiamo file di grandi dimensioni e stiamo cercando di ottimizzare l'operazione.


2
Stai scoprendo che il $ tar -zxvfmetodo è associato a IO o CPU?
EEAA,

1
Credi alla CPU, come posso controllare però?
Giustino

5
Non direttamente correlato, ma 'z' non è più richiesto dal 2004 / tar v1.1.5 gnu.org/software/tar/#TOCreleases :)
JamesHannah,

Risposte:


57

pigz è una versione parallela di gzip. Sebbene utilizzi un solo thread per la decompressione, avvia 3 thread aggiuntivi per la lettura, la scrittura e il controllo del calcolo. I risultati possono variare ma abbiamo riscontrato un miglioramento significativo nella decompressione di alcuni dei nostri set di dati. Una volta installato pigz, il file tar può essere estratto con:

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


11
+1. FWIW, puoi anche scriverlo come tar -xvf --use-compress-program=pigz filenamehere. ( -zequivale a --use-compress-program=gzip.) In alternativa, puoi persino creare gzipun collegamento simbolico pigze continuare a utilizzare -zxvf.
Ruakh,

2
@ruakh, ho dovuto mettere -xfdopo --use-compress-program=pigz, o ho ottenuto un errore. Per qualche ragione, non è stato più veloce dell'uso gzipperò.
jonderry,

Perché bzip2c'è pbzip2( pper parallelo). tar --use-compress-program=pbzip2 -xvf file.tar.bz2.
alfC

C'è un modo per usare il pvcomando per mostrare i progressi, o un equivalente, usando anche la --use-compress-program=pigzbandiera? Durante la compressione, posso farlo gnutar --use-compress-program="pigz | pv" -cf target.tar.gz YourData, ma non sono sicuro di come farlo durante la fase di decompressione / decompressione.
Stefan Lasiewski,

13

se ci sono molti molti piccoli file nella tar ball, cancella il parametro 'v', riprova!


3
Non uso mai -v param. Non so perché le persone abbiano bisogno di così tanto rumore nella console.
Eimantas,

9
@Eimantas Quando decomprimerai qualcosa che contiene molti file multi-gigabyte, vorrai qualche indicazione sullo stato di avanzamento. :)
Michael Hampton

@TimHughes: è fantastico da sapere, per favore pubblica come risposta separata!
smci,

Michael Hampton se hai un file multi-gigabyte ma mescolato con una grande lista di piccoli file hai una buona ragione per non usare -v, nei miei test locali rende tar molto lento specialmente se hai tar in esecuzione su un server remoto tramite terminale, quello che faccio è guardare la directory du -s in modo da poter vedere la directory crescere ...
Luciano Andress Martini

Potrebbe valere la pena utilizzarlo --checkpoint=NUMBER( visualizzare i messaggi di avanzamento ogni NUMBERth record ) anziché -v.
Stefan Lasiewski,

6

Se vuoi vedere i progressi usa qualcosa di simile pv. Ecco un esempio:

pigz -dc mysql-binary-backup.tar.gz | pv | tar xf -
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.