extraire quelques membres des archives tar et canaliser via le réseau


9

modifier: je veux extra member01et member02et répertoireblah/

tarball_1.tar.gzcontient un répertoire test/avec 20 fichiers. Je veux extraire uniquement les membres test/member01et les test/member02répertoires blah/et les copier dans un autre "remote_host" en utilisant ssh / scp.

Est-ce que cela peut être fait en une seule ligne? J'ai envisagé d'utiliser tar, paxou, cpiomais je suppose que je ne suis pas encore très compétent avec ces utilitaires.

Réponses:


15
tar -xzOf file.tar.gz file_you_want_to_extract | ssh user@host 'cat > /path/to/destination_file'
  • -x : Extrait
  • -z : Par gzip
  • -f : Prenez un fichier comme entrée.
  • -O : Extraire vers stdout

Le file_you_want_to_extractest extrait de file.tar.gzla sortie standard, canalisé vers ssh, qui s'exécute catsur l'hôte distant et écrit son standard dans la télécommande destination_file. Bien sûr, vous devez vous assurer que vous disposez d'une autorisation d'écriture sur le fichier de destination souhaité sur l'hôte distant.


Je n'étais pas clair dans mon message d'origine :) J'ai besoin d'extraire plus d'un membre, plus un répertoire.
Felipe Alvarez

devrait être tar -xz0f: après fvient le nom de l'archive
Felipe Alvarez

1
L'extraction de plusieurs membres deviendra compliquée si vous voulez qu'ils soient à une seule ligne, car l'extraction de plusieurs fichiers vers stdout n'a pas vraiment de sens. Vous devrez probablement le faire tarpour chacun que vous souhaitez extraire, puis utiliser scp -r member1 member2 blah user@host:/destination/folder/pour les copier. Si vous voulez vraiment le rendre sur une seule ligne, vous pouvez concaténer toutes ces commandes avec &&. Une option plus pratique consiste simplement à créer un script qui parcourt les options de ligne de commande et s'exécute tarpour chacune d'entre elles, puis scptoutes à la fin.
atanamir

ahhhhh, je vois. Il n'y a donc pas de méthode «simple» à une ligne. Merci :-)
Felipe Alvarez

2
Alternativement, si "one-liner" est plus important que "combien de temps cela prend", vous pouvez diriger toute l'archive via ssh et extraire les membres que vous voulez de l'autre côté "cat file.tar.gz | ssh user @ host ' tar zxvf file1 file2 dir1 '
Colin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.