Gibt es jemals einen Grund, scp anstelle von rsync zu verwenden?
62
Gibt es einen Grund, scpstatt zu verwenden rsync? Ich sehe keinen Grund, scpimmer wieder zu verwenden, rsyncmache alles, was scpgeht, mit mehr Sicherheit (kann Symlinks usw. bewahren).
@Shadur scp ist insofern schädlich, als es vorhandene Zieldateien standardmäßig überschreibt. So ist rsync, aber es ermöglicht zumindest die Begrenzung des möglichen Schadens mit -u.
Gilles 'SO- hör auf böse zu sein'
3
@Gilles Wie bei jedem Tool müssen Sie verstehen, was es tut und wie es funktioniert, um es sicher zu verwenden.
Alex Chamberlain
8
In diesem Zusammenhang regelmäßig cpund rmwürde als "schädlich" - und wenn Sie definieren, "schädlich" als "kann mich verarschen, wenn ich etwas Dummes tun", rsyncist nicht weniger schädlich.
Shadur
1
Auf Systemen ohne rsyncInstallation ist die Verwendung rsync(offensichtlich) nicht einmal möglich.
Kusalananda
Antworten:
46
scp bietet eine cp-ähnliche Methode zum Kopieren von Dateien von einem Computer auf einen Remote-Computer über eine sichere SSH-Verbindung.
Mit rsync können Sie Remote-Ordner synchronisieren.
Sie sind verschiedene Programme und beide haben ihre Verwendung. scp ist immer sicher, während rsync über SSH übertragen werden muss, um sicher zu sein.
Außerdem muss ziemlich sicher rsync am anderen Ende installiert sein.
ckhan
3
@ckhan, nein, es kann kopiert werden, ohne dass auf der anderen Seite etwas installiert ist. Es ist nur weniger effizient.
Mikebloch
2
Ich mag die Einfachheit von scp.
Alex Chamberlain
2
@mikebloch Wie machst du das? Ist es eine neue Funktion? Habe es gerade mit Version 3.0.9 versucht. und es beschwerte sich, dass es nicht rsyncauf der Fernbedienung gefunden werden konnte.
Alexios
1
@mikebloch, es muss auf dem Server installiert sein, um die Prüfsummenberechnungen durchzuführen, was dem Server eine Menge CPU-Last hinzufügen kann. Dies ist der Grund, warum die meisten großen Websites dies nicht unterstützen und warum zsyncsie als Alternative erstellt wurden.
Psusi
19
Eines der wichtigsten Dinge (von denen ich glaube, dass es niemand erwähnt hat) ist, dass wenn Sie große Datenmengen oder Dateien übertragen und die Übertragung aus irgendeinem Grund vor Abschluss getrennt wird, rsync sie dort aufnimmt, wo sie aufgehört hat. Scp hingegen nicht.
Ich verwende scp, wenn ich eine oder mehrere Dateien oder Verzeichnisse übertragen möchte. Ich gehe zu Rsync für Daten mit mehreren GB.
Könnte es wert sein, hinzugefügt zu werden, dass das --partialFlag nützlich ist, wenn große Dateien übertragen werden. rsyncwird dort weitermachen, wo es in der Datei aufgehört hat, anstatt die Datei erneut zu starten.
Flup
Wie bei @Flup bereits erwähnt, lässt rsync keine Datei, die gerade übertragen wird, für Sie zurück, es sei denn, Sie verwenden die Option --partial. Diese Dateien sind standardmäßig im Zielverzeichnis versteckt. Sie können --partial-dir verwenden, um alle diese Dateien in einem einzigen Verzeichnis abzulegen.
Lester Cheung
Nun, rsync -vP username@host:/path/to/file .werde das auch tun. Siehe diese Antwort auf Stackoverflow
rsync kann Dateien zwischen zwei Remote-Hosts übertragen. In der Tat rsync a host:bist gleichbedeutend mit scp a host:b.
Brandizzi
Genau das habe ich geschrieben: rsync kann Deltas zwischen lokalen und Remote-Hosts übertragen, aber scp ist nicht darauf beschränkt, sondern kann Deltas zwischen zwei Remote-Hosts übertragen. @brandizzi
rsyncvergleicht die Dateien an jedem Ende und überträgt nur die geänderten Teile der geänderten Dateien. Wenn Sie Dateien zum ersten Mal übertragen, verhält es sich ziemlich ähnlich scp, aber bei einer zweiten Übertragung, bei der die meisten Dateien unverändert bleiben, werden wesentlich weniger Daten übertragen als bei der Übertragung scp. Dies ist auch eine bequeme Möglichkeit, fehlgeschlagene Übertragungen neu zu starten. Sie müssen nur denselben Befehl erneut ausführen, und der Befehl wird an der Stelle fortgesetzt, an der er zuvor scpaufgehört hat.
scpist einfacher zu verwenden, da weniger Argumente erforderlich sind. Ich fange myselv mit scp ab, anstatt rsyncnur eine einzelne Datei zu übertragen. Vermutlich bin ich einfach zu faul, um einen Alias für rsync zu definieren ... ;-)
Hmmm, warum ist es so? rsync a host:bentspricht der scp a host:bgleichen Anzahl von Argumenten.
Mikebloch
1
@mikebloch Zwei Buchstaben mehr zum Tippen ... ;-) In der Vergangenheit musste ich "-e ssh -a" eingeben, um das richtige Ergebnis zu erhalten. Nun, da "-e ssh" die Standardeinstellung ist, könnte dies ein anderes Spiel sein.
-u
.cp
undrm
würde als "schädlich" - und wenn Sie definieren, "schädlich" als "kann mich verarschen, wenn ich etwas Dummes tun",rsync
ist nicht weniger schädlich.rsync
Installation ist die Verwendungrsync
(offensichtlich) nicht einmal möglich.Antworten:
scp bietet eine cp-ähnliche Methode zum Kopieren von Dateien von einem Computer auf einen Remote-Computer über eine sichere SSH-Verbindung.
Mit rsync können Sie Remote-Ordner synchronisieren.
Sie sind verschiedene Programme und beide haben ihre Verwendung. scp ist immer sicher, während rsync über SSH übertragen werden muss, um sicher zu sein.
quelle
rsync
auf der Fernbedienung gefunden werden konnte.zsync
sie als Alternative erstellt wurden.Eines der wichtigsten Dinge (von denen ich glaube, dass es niemand erwähnt hat) ist, dass wenn Sie große Datenmengen oder Dateien übertragen und die Übertragung aus irgendeinem Grund vor Abschluss getrennt wird, rsync sie dort aufnimmt, wo sie aufgehört hat. Scp hingegen nicht.
Ich verwende scp, wenn ich eine oder mehrere Dateien oder Verzeichnisse übertragen möchte. Ich gehe zu Rsync für Daten mit mehreren GB.
quelle
--partial
Flag nützlich ist, wenn große Dateien übertragen werden.rsync
wird dort weitermachen, wo es in der Datei aufgehört hat, anstatt die Datei erneut zu starten.rsync -vP username@host:/path/to/file .
werde das auch tun. Siehe diese Antwort auf Stackoverflowrsync : Überträgt Deltas (unter Verwendung seines Delta-Transfer-Algorithmus ) zwischen:
scp : Überträgt ganze Dateien zwischen:
Zusammenfassung:
scp
Kann Dateien zwischen zwei Remote-Hosts übertragen, obwohlrsync
dies nicht unterstützt wird.quelle
rsync a host:b
ist gleichbedeutend mitscp a host:b
.User Chris bei Webhosting Talk schreibt:
quelle
scp
ist einfacher zu verwenden, da weniger Argumente erforderlich sind. Ich fange myselv mit scp ab, anstattrsync
nur eine einzelne Datei zu übertragen. Vermutlich bin ich einfach zu faul, um einen Alias für rsync zu definieren ... ;-)quelle
rsync a host:b
entspricht derscp a host:b
gleichen Anzahl von Argumenten.Dank an @tomrunia unter https://gist.github.com/KartikTalwar/4393116
Achten Sie auf
--delete
, verwenden Sie es nicht , wenn Sie fremde Dateien in dest dirs behalten möchtenquelle