40 votes

Comment créer/décompresser le fichier de sortie en temps réel

Quelle est la manière idiomatique de faire ce qui suit

  • tar à stdout
  • lire cette sortie tar depuis stdout et extraire dans un autre dossier.

Ma solution est tar --to-stdout .. | tar -C somefolder -xvf -

Mais il pourrait y avoir une manière plus idiomatique de le faire.

54voto

James Mertz Points 390

La même option -f - fonctionne également pour la compression avec tar.

tar -cf - quelquechose | tar -C certainsdossier -xvf -

GNU tar utilise stdio par défaut :

tar -c quelquechose | tar -C certainsdossier -xv

rsync est également populaire.

rsync -av quelquechose/ certainsdossier/

11voto

Marc Points 6592

Je viens juste d'ajouter un autre cas d'utilisation ici. J'avais une structure de répertoires volumineuse sur un système presque à court d'espace disque et je voulais aboutir à un fichier tar.gz de la structure de répertoires sur une autre machine disposant de beaucoup d'espace.

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

Cela permet d'économiser sur la charge réseau et signifie que vous n'avez pas à faire une tâche tar de l'autre côté au cas où vous voudriez utiliser rsync pour le transfert à la place.

3voto

Robert LeBlanc Points 31

Je n'ai pas assez de réputation pour poster un commentaire à propos de l'utilisation de netcat.

Côté réception, exécutez :netcat -l 5555 > /chemin/vers/dest.tar.gz ou netcat -l 5555 | tar -C /chemin/vers/tar/expandé -xz

Côté envoi, exécutez :tar -C /chemin/vers/source -cz files | netcat 5555

Si vous êtes sur un réseau rapide, ne vous embêtez pas à compresser et décompresser le tar. J'ai utilisé une variante de cela au fil des ans pour toutes sortes de récupérations.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X