Come tar / decomprimere l'output al volo


27

Qual è il modo idiomatico di fare quanto segue

  • tar su stdout
  • leggi questo output tar da stdout ed estrailo in qualche altra cartella.

La mia soluzione è tar --to-stdout .. | tar -C somefolder -xvf -

Ma potrebbe esserci un modo più idiomatico per farlo.

Risposte:


34

La stessa -f -opzione funziona anche per la tarring.

tar -cf - something | tar -C somefolder -xvf -

Tar GNU usa stdio di default:

tar -c something | tar -C somefolder -xv

rsync è anche popolare.

rsync -av something/ somefolder/

9

Basta aggiungere un altro caso d'uso qui. Avevo una grande struttura di directory su un sistema quasi senza spazio su disco e volevo finire con un file tar.gz della struttura di directory su un'altra macchina con molto spazio.

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

Ciò consente di risparmiare sull'overhead di rete e significa che non è necessario eseguire il tar sull'altro lato nel caso in cui si desideri utilizzare rsync per il trasferimento.


Netcat è perfetto per questo. (Gatto da un host a un altro host).
Hennes,

3
@Hennes: con la sua mancanza di autenticazione, controllo dell'integrità, crittografia dei dati, oltre a dover avviarlo manualmente su entrambi i lati per ogni singolo trasferimento (cioè 2 × il lavoro), sembra un po 'meno perfetto
Grawity

Il più delle volte lo gzip prima di scaricarlo sulla rete. Eventuali guasti integretiy si presentano probabilmente come errori di decompressione (anche se non ne ho mai avuti quando l'ho usato). Per quanto riguarda l'avvio di due programmi: Aye, vero.
Hennes,

3
Potrebbe essere più impegnativo, ma per l'invio di un archivio compresso di grandi dimensioni su un collegamento durante un'operazione sensibile al tempo tra macchine in una rete locale protetta o su una VPN, il piping attraverso nc sarà significativamente più veloce di SSH (su una rete da 1Gb, spesso di un fattore 2). Invia oltre una somma md5 dell'archivio per il controllo di integrità.
Spooler
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.