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).

Mikebloch
quelle
6
Kurze Antwort: Nein. Scp ist niemals schädlich.
Shadur
2
@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.

Alex Chamberlain
quelle
9
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.

Ravi
quelle
3
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
Devesh Saini
9

rsync : Überträgt Deltas (unter Verwendung seines Delta-Transfer-Algorithmus ) zwischen:

  1. lokale und entfernte Hosts

scp : Überträgt ganze Dateien zwischen:

  1. lokale und entfernte Hosts
  2. Remote- und Remote- Hosts

Zusammenfassung: scpKann Dateien zwischen zwei Remote-Hosts übertragen, obwohl rsyncdies nicht unterstützt wird.

Devesh Saini
quelle
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
Devesh Saini
2

User Chris bei Webhosting Talk schreibt:

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.

nkint
quelle
0

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 ... ;-)

Nils
quelle
1
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.
Nils
0

Dank an @tomrunia unter https://gist.github.com/KartikTalwar/4393116

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c [email protected] -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

Achten Sie auf --delete, verwenden Sie es nicht , wenn Sie fremde Dateien in dest dirs behalten möchten

Jorj
quelle