estrarre alcuni membri dall'archivio tar e reindirizzare attraverso la rete


9

edit: Voglio più member01e member02e directoryblah/

tarball_1.tar.gzcontiene directory test/con 20 file. Voglio estrarre solo membro test/member01e test/member02directory blah/e copiarli in un altro "host_ remoto" usando ssh / scp.

Questo può essere fatto come one-liner? Ho preso in considerazione l'uso di tar, paxo cpioma credo di non essere ancora molto abile con queste utility.

Risposte:


15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Estratto
  • -z : Attraverso gzip
  • -f : Accetta un file come input.
  • -O : Estrai in stdout

La file_you_want_to_extractsi estrae dal file.tar.gznell'output standard, convogliato in ssh, che corre catsul host remoto e scrive il suo standard al telecomando destination_file. Naturalmente, ti consigliamo di assicurarti di disporre dell'autorizzazione in scrittura per il file di destinazione desiderato sull'host remoto.


Non ero chiaro nel mio post originale :) Ho bisogno di estrarre più di un membro, oltre a una directory.
Felipe Alvarez,

dovrebbe essere tar -xz0f: dopo farriva il nome dell'archivio
Felipe Alvarez,

1
L'estrazione di più membri diventerà disordinata se si desidera che siano a una riga, poiché l'estrazione di più file su stdout non ha molto senso. Probabilmente dovrai farlo tarper ognuno di quelli che vuoi estrarre, quindi usarli scp -r member1 member2 blah user@host:/destination/folder/per copiarli. Se vuoi davvero farlo su una riga, puoi concatenare tutti quei comandi con &&. Un'opzione più pratica è quella di creare anche uno script che esegua l'iterazione attraverso le opzioni della riga di comando ed esegua tarper ognuna e poi scptutte alla fine.
atanamir,

ahhhhh, capisco. Quindi non esiste un metodo "facile" per una sola riga. Grazie :-)
Felipe Alvarez,

2
In alternativa, se "one-liner" è più importante di "quanto tempo impiega", puoi reindirizzare l'intero archivio tramite ssh ed estrarre i membri che desideri dall'altra parte "cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin
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.