Ich habe zwei Solaris-Server. Auf Server1 habe ich eine Datei , archive.tar.gz
. Ich muss es mit ssh auf server2 extrahieren.
Also schreibe ich die Befehle:
ssh server2 < archive.tar.gz | gunzip -c | tar -xf - -C /home/
Aber ich habe einen Fehler bekommen:
Pseudo-Terminal wird nicht zugewiesen, da stdin kein Terminal ist.
Wie kopiere ich die Datei richtig?
ssh
an Server2 senden können ?Antworten:
Ich glaube, Sie könnten so etwas tun:
Wenn Sie das Verzeichnis steuern müssen, in das es auf Server2 extrahiert wird:
Solaris
Wenn Sie mit Solaris arbeiten, enthält Ihre Version von tar wahrscheinlich keine der Komprimierungsfunktionen, die GNU tar bietet. Fürchte nicht, dass du diesen Befehl noch ausführen kannst, wir müssen nur die Katze
archive.tar.gz
in einen Befehl zerlegen, der zuerst den Tarball dekomprimieren kann.So etwas sollte tun:
Oder dieses:
Oder dieses:
quelle
tar
versteht diex
Flagge nicht. Verwenden Sie entwedergtar
(GNU tar), wenn es installiert ist, oder bessertar
undgunzip
.cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip; tar xf -)"
Sie übergeben keinen Befehl an
ssh
, daher wird eine Shell auf der Remote-Seite ausgeführt. Der Inhalt vonarchive.tar.gz
wird bei seiner Standardeingabe an diese Shell übergeben, sodass versucht wird, ihn als Shell-Skript zu analysieren. Je nach Inhalt der Datei kann es zu Heiterkeit kommen oder auch nicht.In Ihrer Beschreibung ist nicht klar, wo Sie diese Befehle ausführen. Wenn Sie sich auf Server1 befinden, sich
archive.tar.gz
auf Server1 befinden und das Archiv auf Server2 extrahieren möchten, leiten Sie das Archiv an Server2 weiter und führen Sie dort den Extraktionsbefehl aus.Alternativ können Sie sich bei Server2 anmelden, das Dateisystem von Server1 über sshfs bereitstellen und das Archiv so entpacken, wie Sie eine lokale Datei entpacken würden.
quelle
sshfs
ist großartig!Sie können das Archiv in ein bestimmtes vorhandenes Verzeichnis erweitern, ohne den folgenden
cd
Befehl zu verwenden:Wenn Sie nicht wissen, ob das Verzeichnis beendet wird, können Sie Folgendes verwenden:
quelle