2016-07-08 26 views
-1

Der einfachste Weg, diese Frage zu erklären, ist die folgende Codezeile, die ich in einem Bash-Skript habe.tar über ssh: Legen Sie Zieldateiname und Speicherort fest, und überschreiben Sie vorhandene

tar -cJf - ./my_folder | ssh [email protected] 'tar -xJf - && rm -r ./path-to-my_folder/my_folder && mv ./my_folder ./path-to-my_folder' 

Ich verstehe nicht vollständig, wie es funktioniert. (Was bedeutet '-' in diesem Zusammenhang?) Aber das ist, was es tut:

  • Erstellt ein komprimiertes tar-Archiv im Speicher und das Rohr schiebt irgendwie die tar-Daten über ssh

  • Das tar-Archiv erscheint in user s Stammordnern wird

  • der SSH-Befehl wird das Material in dem zwischen ' ... ' Ausführen extrahiert wird der alte Ordner auf der Server-Seite entfernt und ersetzt rm Verwendung durch die extrahierten Ordner aus dem u Bewegen ser's Wurzelverzeichnis

Es ist offensichtlich, dass dies ein ziemlich langer Weg ist, Dinge zu tun. Es wäre besser, wenn das tar-Archiv an den richtigen Ort extrahiert würde, so dass die Befehle rm und mv nicht notwendig wären. Kann das gemacht werden?

Hinweis: I kann nicht verwenden rsync.

+0

Alle Ihre tar-Über SSH Fragen gehören wirklich zu unix.stackexchange.com oder superuser.com. SO ist für Programmierfragen, nicht Fragen über gewöhnliche Befehlszeilen. – Barmar

+0

@Barmar Ich stimme zu - ich habe versehentlich eine Frage auf Serverfehler geschrieben, die auch falsch war. Ich habe es für die Migration markiert – user3728501

+0

Ich stimme diese Frage als Off-Thema zu schließen, weil es auf Unix & Linux gehört –

Antwort

1

Versuchen Sie folgendes:

tar -cJf - ./my_folder | ssh [email protected] 'tar -xJf - -C path-to-my_folder' 

Das - Zeichen bedeuten STDOUT. Aber in der modernen tar Implementierung STDOUTist Standard-Ausgabe, so -f - omited werden:

tar -cJ my_folder | ssh [email protected] 'tar -xJC path-to-my_folder' 

Der -J Schalter xz Kompression bedeuten könnte Wich zu viel des Guten auf kleine Konfiguration (wie Himbeere-pi, android und viele embed-Systeme), so könnte man bessere Leistungen erhalten, indem Sie -z Schalter für gzip Kompression:

tar -zc my_folder | ssh [email protected] 'tar -zxC path-to-my_folder' 
+0

Fantastisch - Danke! Es scheint sogar die alten Inhalte zu überschreiben. – user3728501