Comment tarer / décompresser la sortie à la volée


27

Quelle est la façon idiomatique de faire ce qui suit

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

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

Mais peut-être existe-t-il une façon plus idiomatique de le faire.

Réponses:


34

La même -f -option fonctionne également pour le goudronnage.

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

GNU tar utilise stdio par défaut:

tar -c something | tar -C somefolder -xv

rsync est également populaire.

rsync -av something/ somefolder/

9

Ajout d'un autre cas d'utilisation ici. J'avais une grande structure de répertoires sur un système presque hors de l'espace disque et je voulais me retrouver avec un fichier tar.gz de la structure de répertoires sur une autre machine avec beaucoup d'espace.

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

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


Netcat est parfait pour cela. (Chat d'un hôte à un autre hôte).
Hennes

3
@Hennes: Avec son manque d'authentification, de vérification d'intégrité, de chiffrement des données, ainsi que d'avoir à le démarrer manuellement des deux côtés pour chaque transfert individuel (c.-à-d. 2 × le travail), cela semble un peu moins que parfait
grawity

La plupart du temps, je le gzip avant de le vider sur le réseau. Toutes les pannes intégrales sont susceptibles d'apparaître comme des erreurs de décompression (bien que je n'en ai jamais eu quand je l'ai utilisé). Quant au démarrage de deux programmes: Oui, c'est vrai.
Hennes

3
Cela peut être plus de travail, mais pour envoyer une grande archive compressée sur une liaison lors d'une opération sensible au temps entre des machines dans un réseau local sécurisé ou sur un VPN, le routage via nc sera beaucoup plus rapide que SSH (sur un réseau 1 Go, souvent par un facteur de 2). Envoyez une somme md5 de l'archive pour vérification d'intégrité.
Spooler
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.