Kopieren von Dateien mit rsync vom Remote-Server auf den lokalen Computer

318

Wie lautet der Befehl, wenn ich alle Dateien von einem Verzeichnis in ein lokales Verzeichnis auf meinem Computer kopiert habe?

Markstewie
quelle
4
Weil Sie rsyncdirekt von Ihrem lokalen Computer aus können.
Johnsyweb
2
Oh ... ja ich kann. Ich sehe jetzt die anderen Antworten. Vielen Dank.
Markstewie
17
Dies ist eine häufige Aufgabe für die (Web-) Entwicklung mit einer guten Antwort. Ich verstehe nicht, warum es noch geschlossen ist.
d.raev
6
Ich denke, @ d.raev bezog sich auf die Tatsache, dass die Frage als nicht zum Thema gehörend geschlossen wurde (wenn ich mich richtig erinnere, habe ich markiert, dass diese Frage zu SuperUser migriert wird, wo sie meiner Meinung nach besser passt), anstatt dass es keine akzeptierte Antwort gab . Trotzdem ... es war schön, dass meine Antwort nach all der Zeit akzeptiert wurde. :-)
Johnsyweb
3
@markstewie keine schlechten Gefühle, es ist eine gute Frage und es hat mir geholfen (scheint auch viele andere zu sein), aber dieses "geschlossene" lässt es nicht vertrauenswürdig aussehen, so dass ich es gewohnt bin, etwas Aufmerksamkeit darauf zu lenken.
d.raev

Antworten:

575

Von Ihrem lokalen Computer:

rsync -chavzP --stats [email protected]:/path/to/copy /path/to/local/storage

Von Ihrem lokalen Computer mit einem nicht standardmäßigen SSH-Port:

rsync -chavzP -e "ssh -p $portNumber" [email protected]:/path/to/copy /local/path

Oder vom Remote-Host, vorausgesetzt, Sie möchten wirklich so arbeiten und Ihr lokaler Computer lauscht SSH:

rsync -chavzP --stats /path/to/copy [email protected]:/path/to/local/storage

Siehe man rsyncfür eine Erklärung meiner üblichen Schalter.

Johnsyweb
quelle
255
Eine Erklärung des Befehls: explainshell.com/...
beefsack
118
Wow, diese Erklärungsseite ist großartig.
Gosukiwi
2
@cmcdragonkai: In der Tat muss der lokale Host einen SSH-Server ausführen und für den Remote-Host zugänglich sein. Dies ist einer der Gründe, warum ich die erste Lösung der zweiten vorziehe.
Johnsyweb
16
Seien Sie vorsichtig, wenn Sie mit nachgestellten Schrägstrichen synchronisieren. Der von Johnnysweb gegebene Befehl würde ein Verzeichnis namens copy inside erstellen /path/to/local/storage. Wie so /path/to/local/storage/copy. Wenn es das ist, was du großartig willst. Ein häufigeres Szenario ist jedoch, dass Sie den Inhalt des Remote-Verzeichnisses in ein Verzeichnis in Ihrem lokalen Verzeichnis kopieren möchten. Dann würden Sie tun, /path/to/copy/was den Inhalt innerhalb des Verzeichnisses platzieren würde, /path/to/local/storageohne ein lokales Kopierverzeichnis zu erstellen.
Kap
16
Ich bin wegen eines rsync-Befehls hierher gekommen und habe EXPLAINSHELL.com erhalten . Danke @beefsack!
Cyphase
50

Wenn Sie über SSH-Zugriff verfügen, müssen Sie nicht zuerst SSH und dann kopieren. Verwenden Sie einfach Secure Copy (SCP) vom Ziel.

scp user@host:/path/file /localpath/file

Platzhalterzeichen werden also unterstützt

scp user@host:/path/folder/* /localpath/folder

kopiert alle entfernten Dateien in diesem Ordner. Wenn mehr als ein Verzeichnis kopiert wird.

note -r kopiert auch alle Unterordner und Inhalte.

Tezyn
quelle
6
Warum scpeher verwenden als rsync? Achten Sie auch darauf, dass Ihre Shell nicht versucht, sich zu erweitern user@host:/path/folder/*, möglicherweise mithilfe von einfachen Anführungszeichen ( ').
Johnsyweb
Ich finde es einfacher, scp vom Ziel aus zu verwenden ... Im Wesentlichen handelt es sich um eine Dateikopie über ssh, ohne dass zuerst die ssh-Verbindung hergestellt werden muss.
Tezyn
8
Ich weiß was scpist, das war nicht meine Frage. Warum hast du nicht benutzt rsync? Dies ist, was die Frage verlangt, erfordert keine etablierte SSH-Sitzung und ist oft schneller und effizienter als scp.
Johnsyweb
26
Denken Sie daran, scp folgt Symlinks, anstatt sie zu kopieren. Dies kann dazu führen, dass mehr kopiert wird als erwartet und Symlinks verloren gehen (diese werden zu normalen Ordnern / Dateien).
Mondane
2
Mondanes Antwort ist genau der Grund, warum ich diesen Beitrag gefunden habe. Normalerweise verwende ich scp für alles, aber ich musste die Berechtigungen und den Symlink von Server zu Server beibehalten. Auch der Geschwindigkeitsunterschied (bc mein Neuling selbst definitiv zuerst scped) war riesig.
Kyle