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.

shabunc
la source

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/
grawity
la source
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.

quickshiftin
la source
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