it-swarm.com.de

Wie unterscheidet sich "scp" von "rsync"?

Ein Artikel zum Einrichten von Ghost-Blogging gibt an, scp zu verwenden, um von meinem lokalen Computer auf einen Remote-Server zu kopieren:

scp -r ghost-0.3 [email protected]*your-server-ip*:~/

Railscast 339: Chef Solo Basics verwendet jedoch scp, um in die entgegengesetzte Richtung zu kopieren (vom Remote-Server auf den lokalen Computer):

scp -r [email protected]:/var/chef .

Wenn der Autor in demselben Railscast Dateien auf den Remote-Server kopieren möchte (in dieselbe Richtung wie im ersten Beispiel), verwendet er rsync:

rsync -r . [email protected]:/var/chef

Warum den Befehl rsync verwenden, wenn scp in beide Richtungen kopiert wird? Wie unterscheidet sich scp von rsync?

182
Leahcim

Der Hauptunterschied zwischen diesen Tools besteht darin, wie sie Dateien kopieren.

scp liest grundsätzlich die Quelldatei und schreibt sie in das Ziel. Es führt eine einfache lineare Kopie aus, lokal oder über ein Netzwerk.

rsync kopiert Dateien auch lokal oder über ein Netzwerk. Es verwendet jedoch einen speziellen Delta-Transfer-Algorithmus und einige Optimierungen, um die Operation viel schneller zu machen. Betrachten Sie den Anruf.

rsync A Host:B
  • rsync überprüft die Dateigrößen und Änderungszeitstempel von A und B und überspringt die weitere Verarbeitung, falls sie übereinstimmen.

  • Wenn die Zieldatei B bereits vorhanden ist, stellt der Delta-Übertragungsalgorithmus sicher, dass nur Unterschiede zwischen A und B über die Leitung gesendet werden.

  • rsync schreibt Daten in eine temporäre Datei T und ersetzt dann die Zieldatei B durch T, damit das Update für Prozesse möglicherweise "atomar" erscheint mit B.

Ein weiterer Unterschied zwischen ihnen betrifft die Anrufung. rsync verfügt über eine Vielzahl von Befehlszeilenoptionen, mit denen der Benutzer sein Verhalten fein abstimmen kann. Es unterstützt komplexe Filterregeln, läuft im Batch-Modus, Daemon-Modus usw. scp hat nur wenige Schalter.

Zusammenfassend verwenden Sie scp für Ihre täglichen Aufgaben. Befehle, die Sie ab und zu in Ihrer interaktiven Shell eingeben. Es ist einfacher zu verwenden, und in diesen Fällen helfen rsync-Optimierungen nicht viel.

Verwenden Sie für wiederkehrende Aufgaben wie cron-Jobs rsync. Wie bereits erwähnt, werden bei bereits mehrfachen Aufrufen bereits übertragene Daten genutzt, die sehr schnell arbeiten und Ressourcen einsparen. Es ist ein hervorragendes Werkzeug, um zwei Verzeichnisse über ein Netzwerk synchron zu halten.

Wenn Sie mit großen Dateien arbeiten, verwenden Sie rsync mit der Option -P. Wenn die Übertragung unterbrochen wird, können Sie den Vorgang dort fortsetzen, wo er gestoppt wurde, indem Sie den Befehl erneut ausgeben. Siehe Sid Kshatriyas Antwort .

270
Rafa

rysnc kann für langsame und unzuverlässige Verbindungen nützlich sein. Wenn also Ihr Download mitten in einer großen Datei abbricht, kann rysnc dort fortfahren, wo er beim erneuten Aufruf aufgehört hat.

Verwenden Sie rsync -vP [email protected]:/path/to/file .

Die Option -P behält teilweise heruntergeladene Dateien bei und zeigt auch den Fortschritt an.

Wie üblich man rsync überprüfen

51
Sid Kshatriya

Unterschied b/w scp und rsync bei verschiedenen Parametern

1. Leistung über Latenz

  • scp: scp ist relativ weniger optimiert und beschleunigt

  • rsync: rsync ist vergleichsweise optimierter und schneller

https://www.disk91.com/2014/technology/networks/compare-performance-von-different-file-transfer-protokoll-overlatenz/

2. Umgang mit Unterbrechungen

  • scp: Das Befehlszeilenprogramm scp kann abgebrochene Downloads von unterbrochenen Netzwerkverbindungen nicht fortsetzen

  • rsync: Wenn die obige rsync-Sitzung selbst unterbrochen wird, können Sie sie beliebig oft fortsetzen, indem Sie denselben Befehl eingeben. rsync startet die Übertragung automatisch dort, wo sie unterbrochen wurde.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. Befehlsbeispiel

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh [email protected]:bigdata.tgz ./bigdata.tgz 

Die -P-Option ist die gleiche wie --partial --progress, sodass rsync mit teilweise heruntergeladenen Dateien arbeiten kann. Die Option --rsh=ssh weist rsync an, ssh als Remote-Shell zu verwenden.

4. Sicherheit:

scp ist sicherer. Sie müssen rsync --rsh=ssh verwenden, um es so sicher wie scp zu machen.

man Dokument, um mehr zu erfahren:

 performance chart

6
Amitesh

Es gibt einen Unterschied zu mir, dass scp immer mit ssh (Secure Shell) verschlüsselt ist, während rsync nicht notwendigerweise verschlüsselt ist. Insbesondere führt rsync selbst keine Verschlüsselung durch. Es ist immer noch in der Lage, andere Mechanismen (z. B. ssh) zur Verschlüsselung zu verwenden.

Neben der Sicherheit hat die Verschlüsselung auch einen großen Einfluss auf Ihre Übertragungsgeschwindigkeit und den CPU-Aufwand. (Meine Erfahrung ist, dass rsync deutlich schneller sein kann als scp.)

Schauen Sie sich diese post an, wenn für rsync die Verschlüsselung aktiviert ist.

2
Samuel Li

Ein Hauptmerkmal von rsync über scp (neben dem Delta-Algorithmus) ist, dass es automatisch prüft wenn die übertragene Datei korrekt übertragen wurde. Scp macht dies nicht, was bei der Übertragung größerer Dateien gelegentlich zu Beschädigungen führen kann. Im Allgemeinen ist Rsync eine Kopie mit Garantie.

Siehe (centos) -Manpage-Hinweis am Ende der --checksum-Optionsbeschreibung:

Beachten Sie, dass rsync immer überprüft, ob jede übertragene Datei .__ war. auf der Empfangsseite korrekt rekonstruiert, indem eine ganze Datei geprüft wird Prüfsumme, die beim Übertragen der Datei generiert wird, aber die Die automatische Überprüfung nach der Übertragung hat nichts damit zu tun Option vor der Übertragung „Muss diese Datei aktualisiert werden?“ prüfen.

2
count0

es ist besser, in einem praktischen Kontext zu denken. In unserem Team verwenden wir rsync -aP, um einen schlechten Cassandra-Host in unserem Cluster zu ersetzen. Mit scp können wir das nicht machen (langsam und keine Fortschrittserhaltung). 

0
del bao

scp ist am besten für one -Datei geeignet.
ODEReine Kombination aus tar & Komprimierung für kleinere Datensätzewie Quellcodebäume mit kleinen Ressourcen (ie: images, sqlite etc) .


Noch , wenn Sie anfangen, sich mit größeren Volumes zu beschäftigen, sagen Sie:

  • Medienordner (40 GB)
  • Datenbanksicherungen (28 GB)
  • mp3-Bibliotheken (100 GB)  

Es wird unpraktisch, eine Zip/tar.gz- Datei zu erstellen, die mit scp zu diesem Zeitpunkt an die physischen - Grenzen des gehosteten Servers übertragen werden soll.

Als Übung können Sie Gymnastik wie Piping tar in ssh ausführen und die Ergebnisse in eine remote -Datei umleiten. (Speichern der Notwendigkeit zum Erstellen von eines Swap- oder temporären Klons aka Zip oder tar.gz)

Jedoch ,

rsync vereinfacht diesen Vorgang und ermöglicht es Ihnen, data zu übertragen, ohne zusätzlichen Speicherplatz zu beanspruchen.

Ebenfalls

Kontinuierliche (Cron?) - Aktualisierungen verwenden nur minimale Änderungen gegenüber der vollständigen Geschwindigkeit geklonter Kopien. 

tl; dr 
scp == kleiner Maßstab (mit Platz für komprimierte Dateien auf demselben Laufwerk) 
rsync == große Skala (mit der Notwendigkeit, große Daten zu sichern und keinen Platz mehr zu haben)

0
copremesis