Ich habe dies auch rsyncin der Vergangenheit erlebt. Die Lösung, die das Problem für mich behoben hat, bestand darin, es innerhalb einer screenSitzung auszuführen, wodurch die Verbindung zum Remote-Server aufrechterhalten werden konnte.
screen -LS rsync
[execute your rsync command]
Ctrl-A+D to detach from the session
Sie können den Status überprüfen, indem Sie ausführen screen -x rsync(oder was auch immer Sie die Sitzung benennen möchten, wenn Sie ihr einen Namen geben, der nicht erforderlich ist). Dadurch wird Ihre aktuelle Shell erneut an diese Sitzung angehängt. Denken Sie daran, die Verbindung erneut zu trennen, nachdem Sie den Status überprüft haben, damit er im Hintergrund weiter ausgeführt wird.
Sie können den Befehl, über den screenim Hintergrund ausgeführt werden soll, auch auf einen Schlag ausführen, indem Sie [jemand korrigiert mich bitte, wenn ich falsch liege] screen -dm 'command'. Vielleicht möchten Sie es, man screenbevor Sie es mit dem letzten versuchen.
BEARBEITEN:
Ich bearbeite meine Antwort, weil Sie bestätigt haben, dass screendies in diesem Szenario keine Unterstützung bietet, aber Sie haben auf meinen Kommentar scpgeantwortet und vorgeschlagen, herauszufinden, welche Ergebnisse Sie erhalten. Darauf haben Sie seltsamerweise geantwortet, dass es einwandfrei funktioniert hat.
Meine neue Antwort lautet also: benutze scp- oder ssh(mit tar) - stattrsync
Zugegeben, scpdie große Anzahl von Merkmalen wie nicht unterstützt rsyncwerden, würde aber eigentlich nur , wie viele Features zu entdecken , überrascht , dass es funktioniert Unterstützung , die fast ist identisch zu dem rsync.
Reale Szenarien für scpund andere Alternativen zu rsync:
Vor einiger Zeit wurde ich beauftragt, ein Shell-Skript zu erstellen, mit dem Protokolle von unseren Produktionsservern abgerufen und lokal auf einem Webserver gespeichert werden, damit Entwickler zur Fehlerbehebung darauf zugreifen können. Nachdem ich erfolglos versucht hatte, das Unix-Team zur Installation rsyncauf unseren Servern zu bewegen, kam ich auf eine Problemumgehung, scpdie genauso gut funktionierte.
Davon abgesehen habe ich das Skript kürzlich so geändert, dass es nur sshund tar- GNU tar/ verwendet gtar, um genau zu sein. GNU tarunterstützt viele der Optionen , die Sie tatsächlich in finden rsync, wie zum Beispiel --include, die --excludeErlaubnis / Attribut Erhaltung, Kompression usw.
Die Art und Weise, wie ich dies jetzt erreiche, besteht darin, sshauf den Remote-Server (über pubkey auth) zuzugreifen und zu verwenden gtar -czf - [other options such as --include='*.log' and --exclude='*core*', etc.]- dies schreibt alle Informationen in stdout, die dann [lokal] weitergeleitet werden, tar -xzfdamit keine Änderungen auf dem Remote-Produktionsserver vorgenommen werden und alle Dateien werden unverändert auf den lokalen Server gezogen. Es ist eine großartige Alternative zu rsyncdiesem Fall. Das einzige, was weder wichtig tarnoch scpunterstützt wird, sind inkrementelle Sicherungen und die Ebene der Fehlerprüfung auf Blockebene, die diese rsyncFunktionen bietet.
Der vollständige Befehl , den ich mich beziehe , bei der Verwendung sshund tarso etwas wie diese würde (remote ist Solaris 10, lokal ist Debian, für das, was es wert ist ):
cd /var/www/remotelogs
ssh -C user@remotehost "cd /path/to/remote/app.directories; gtar -czf - --include='*.log' --exclude='*.pid' --exlude='*core*' *" | tar -xz
In Ihrem Szenario wäre es umgekehrt - tar -cf -lokal und über einen Pipe an den Remote-Server ssh user@remotehost "tar -xf -"- es gibt eine andere Antwort, die auf diese Art von Verhalten verweist, aber nicht so detailliert ist.
Es gibt einige andere Optionen, die ich aufgenommen habe, um die Dinge zu beschleunigen. Ich habe alles unermüdlich geplant, um die Ausführungszeit so gering wie möglich zu halten. Sie würden denken, dass die Verwendung der Komprimierung mit tarsinnlos wäre, aber sie beschleunigt die Dinge tatsächlich ein wenig, ebenso wie die Verwendung des -CFlags mit ssh, um die sshKomprimierung zu aktivieren . Ich kann diesen Beitrag zu einem späteren Zeitpunkt aktualisieren, um den genauen Befehl aufzunehmen, den ich verwende (der dem, was ich gepostet habe, sehr ähnlich ist), aber ich habe im Moment keine Lust, auf VPN zuzugreifen, da ich diese Woche im Urlaub bin.
Unter Solaris 10 verwende ich es auch -c blowfish, da es die schnellste Verschlüsselung ist, mit der man sich authentifizieren kann, und auch dazu beiträgt, die Dinge ein wenig zu beschleunigen, aber unser Solaris 11 unterstützt es entweder nicht oder hat diese Verschlüsselungssuite deaktiviert.
Wenn Sie sich für die Option ssh/ entscheiden tar, ist es außerdem eine gute Idee, meine ursprüngliche Lösung zu implementieren, screenwenn Sie ein Backup erstellen , das eine Weile dauert. Wenn nicht, stellen Sie sicher, dass Ihre Keepalive- / Timeout-Einstellungen in Ihrem ssh_configgenau richtig eingestellt sind. Andernfalls führt diese Methode sehr wahrscheinlich zu einem Rohrbruch.
Selbst wenn Sie mitmachen scp, finde ich es immer eine bewährte Methode, screenoder tmuxwenn Sie eine Operation dieser Art durchführen, nur für den Fall . Oft folge ich nicht meinen eigenen Ratschlägen und tue dies nicht, aber es ist in der Tat eine gute Praxis, eines dieser Tools zu verwenden, um sicherzustellen, dass der Remote-Job nicht versagt, weil Ihre aktive Shell-Sitzung irgendwie getrennt wird.
Ich weiß, dass Sie die Grundursache Ihres rsyncProblems herausfinden möchten . Wenn dies jedoch wirklich wichtig ist, sind dies zwei großartige Problemumgehungen, mit denen Sie in der Zwischenzeit experimentieren können.
kerberosauf dem Remote-Server authentifiziere.