Kopieren von einem Remote-Server ohne rsync


7

Ich muss rekursiv einen Ordner von einem Ubuntu-Remote-Server kopieren, auf den ich sshZugriff habe. Ich möchte weder symbolischen Links folgen noch Berechtigungen / Eigentümer / Gruppe kopieren, da mein Client-System (auch Ubuntu) nicht dieselben Benutzer wie der Server hat.

Diese rsync Lösung könnte die beste sein. Aber der Server hat nicht rsyncund ich kann es dort nicht installieren; Dieser Befehl gibt mir also einen Fehler.

Gibt es eine andere Möglichkeit, den Remote-Ordner zu kopieren?


tar oder cpio ... diese haben Einschränkungen, aber sie kopieren Symlinks als Symlinks
Skaperen

oder laden Sie Ihre eigene Kopie der rsyncausführbaren Datei
hoch

Ich hatte die gleiche Situation bei Crazydomains - ich habe gerade die Quelle von rsync von hier heruntergeladen. download.samba.org/pub/rsync - dann kompiliert, in das Verzeichnis des Remote-Benutzers gestellt ~/binund --rsync-path=/home/user/bin/rsyncfür den lokalen Befehl rsync verwendet. arbeitete ein Vergnügen.
Bhu Boue Vidya

Antworten:


8

Wenn Sie die Berechtigung haben, FUSE auf Ihrem lokalen Computer zu verwenden, installieren Sie das sshfsPaket . Mit SSHFS können Sie über den normalen Dateisystemzugriff auf Remote-Dateien zugreifen: Es stellt einen Verzeichnisbaum bereit, auf den über SFTP zugegriffen wird. Sie benötigen nur SFTP-Zugriff auf der Remote-Seite (die standardmäßig mit OpenSSH unter Ubuntu aktiviert ist). Sobald das Remote-Verzeichnis bereitgestellt ist, können Sie die Tools Ihrer Wahl zum Bearbeiten von Dateien verwenden, ohne sich darum kümmern zu müssen, ob sie lokal oder remote sind.

mkdir ~/net/remote-server
sshfs remote-server:/ ~/net/remote-server
rsync -a --no-copy-links ~/net/remote-server/remote/path/ /local/path/
fusermount -u ~/net/remote-server

9

Sie können scp -rDateien rekursiv zwischen verschiedenen Hosts kopieren. Ihre Syntax könnte so seinscp -r user@Ubuntu-Server:/home/myuser ./from_Ubuntu_server

Außerdem können Sie möglicherweise Ihre lokale rsyncBinärdatei mit scp auf den Ubuntu-Server hochladen und den Befehl zu --rsync-path=/home/myuser/rsyncIhrem ursprünglichen rsyncBefehl hinzufügen , um Ihrem Client rsyncmitzuteilen, welche rsyncer auf dem Ubuntu-Server aufrufen soll.


Ihr Tipp zur Verwendung --rsync-path=/...hat mir auf meinem Remote-Host geholfen, auf dem ich problemlos meine eigene Kopie von rsyncaus dem Quellcode kompilieren und von lokalem rsync cmd darauf verweisen konnte. hat ein Vergnügen gemacht! thx sooooooo viel ....
bhu Boue vidya

3

Sie können eine Verwendung tarund sshKombination wie folgt aus :

tar cvzf - folder/ | ssh -C user_name@host_name "cd ~/; tar xvzf -"

Die Frage enthält nichts, was darauf hindeutet, dass das OP sudo verwenden muss.
Kenster

Das kopiert lokal auf Remote; es sollte ssh @remote "tar cf- from" | tar xf-für diese Frage umgekehrt werden . Beides tar zund ssh -Cist mit ziemlicher Sicherheit eine Verschwendung von CPU; sogar eine wird nur benötigt, wenn große Datenmengen oder langsames Netz. Die Verwendung vauf beiden gleichzeitigen Teeren führt häufig zu einer sehr verwirrenden Ausgabe. Ich würde es nur am Ziel machen.
Dave_thompson_085
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.