So tarieren Sie den Output on the fly

27

Was ist der idiomatische Weg, um Folgendes zu tun

  • Teer zu stdout
  • Lesen Sie diese Teer-Ausgabe von stdout und extrahieren Sie sie in einen anderen Ordner.

Meine Lösung ist tar --to-stdout .. | tar -C somefolder -xvf -

Aber vielleicht gibt es eine idiomatischere Möglichkeit, dies zu tun.

shabunc
quelle

Antworten:

34

Die gleiche -f -Option gilt auch für das Teern.

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

GNU tar verwendet standardmäßig stdio:

tar -c something | tar -C somefolder -xv

Beliebt ist auch rsync.

rsync -av something/ somefolder/
Grawity
quelle
9

Fügen Sie hier einfach einen weiteren Anwendungsfall hinzu. Ich hatte eine große Verzeichnisstruktur auf einem System, auf dem fast kein Speicherplatz mehr vorhanden war, und wollte am Ende eine tar.gz-Datei der Verzeichnisstruktur auf einem anderen Computer mit viel Speicherplatz haben.

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

Dies spart Netzwerk-Overhead und bedeutet, dass Sie nicht auf der anderen Seite tarieren müssen, wenn Sie stattdessen rsync für die Übertragung verwenden möchten.

quickshiftin
quelle
Dann bist du bei Netcat genau richtig. (Katze von einem Host zu einem anderen Host).
Hennes
3
@Hennes: Da es an Authentifizierung, Integritätsprüfung und Datenverschlüsselung mangelt und es für jede einzelne Übertragung (dh für 2 × die Arbeit) auf beiden Seiten manuell gestartet werden muss , klingt es etwas weniger als perfekt
grawity
Die meiste Zeit habe ich es gzip bevor ich es über das Netzwerk kopiere. Alle Integritätsfehler werden wahrscheinlich als Dekomprimierungsfehler angezeigt (obwohl ich bei der Verwendung keine erhalten habe). Was das Starten von zwei Programmen angeht: Aye, stimmt.
Hennes
3
Es mag mehr Arbeit bedeuten, aber für das Senden eines großen komprimierten Archivs über eine Verbindung während eines zeitkritischen Vorgangs zwischen Computern in einem gesicherten lokalen Netzwerk oder über ein VPN ist die Weiterleitung durch nc erheblich schneller als bei SSH (häufig über ein 1-Gbit-Netzwerk) um den Faktor 2). Senden Sie eine MD5-Summe des Archivs zur Integritätsprüfung.
Spooler