Ich hoffe , dass dies nicht als eine Frage zählt ohne wirkliche Antwort, da ich nicht einen guten Grund zu finden scheinen zu verwenden , cp(1)
über rsync(1)
in nahezu allen Umständen. Sollte man in der Regel bevorzugen rsync
über cp
? Gibt es eine gute Richtlinie für ihre Verwendung?
rsync
: Überträgt die Diffs, es kann Komprimierung verwenden, es kann remote (und sicher) verwendet werden, es kann trotz einer Unterbrechung neu gestartet werden, selbst während der Übertragung einer einzelnen großen Datei. 'cp
: Vielleicht ist es einfach einfacher zu bedienen? Ist es schneller als rsync?
Antworten:
cp
ist ein Teil von Coreutils, daher ist es überall vorhanden. Darüber hinaus wurde es hauptsächlich zum Kopieren von Dateien auf einem Computer entwickelt.rsync
ist kein Teil von coreutils, es ist auch in der Standardumgebung nicht vorhanden. Darüber hinaus wurde es hauptsächlich zum Übertragen von Dateien über das Netzwerk entwickelt. Hatrsync
auch mehr Abhängigkeiten im Vergleich zu Coreutils, aber dieser Unterschied macht keinen großen Sinn.PS: Übrigens ist die CPU-Auslastung auf den eingebetteten Systemen immer noch wichtig.
quelle
Der Hauptgrund, den Sie nicht
rsync
für jeden Kopiervorgang verwenden möchten , ist der hohersync
Rechenaufwand.rsync
Scannt alle Dateien, bevor die Datenübertragung tatsächlich beginnt . Dann wird vor jeder Datei ein Vergleich durchgeführt. Dieser Overhead ist nicht unerheblich, selbst bei den 2012 verfügbaren schnellen CPUs. Ich mache diese Art von Übertragungen ständig, und auf Servern mit recht anständiger Größe kann der Overhead zeitaufwändig sein, sobald Sie anfangen, mit Datenmengen umzugehen.Ich sage nicht, nicht verwenden
rsync
, überhaupt nicht, immer dann verwenden,rsync
wenn Sie etwas Übertragungszeit sparen können. Verwenden Sie nur nicht,rsync
wenncp
das Gleiche erreicht werden könnte.Was ich normalerweise mache, bringen Sie zuerst die Daten mit regulären Kopiermethoden. Dann
rsync
für nachfolgende Änderungen, wenn diese Unterschiede genutzt werden können.quelle
Ich würde erwarten
cp
, dass beim lokalen Kopieren weniger CPU verwendet wird , da keine Unterschiede verwendet werden, während Schreibvorgänge bei Verwendung von Unterschiedenrsync
reduziert werden können. Die Komprimierung sollte lokal vermieden werden, da Sie ohnehin die gesamte Datei / das gesamte Diff lesen und schreiben müssen und zusätzliche Berechnungen erforderlich sind.quelle
rsync
wird bevorzugt. Aber wenn es keinen Unterschied gibt,rsync
bringt es nur Overhead ohne zusätzlichen Nutzen.rsync
, den doppelten E / A-Overhead für zwei identische Dateien im Vergleich zu blind zu habencp
: eine geänderte Änderungszeit. Sie müssten geben--size-only
, um dies zu beheben. Die einzige andere Möglichkeit, dies zursync
umgehen, besteht darin, sich auf Prüfsummen für Dateisysteme zu verlassen, aber für die meisten Dateisysteme sind sie keine sehr guten statistischen Prädiktoren für die Identität.Abgesehen von den Gemeinkosten bei einem großen oder nicht vorhandenen Diff
rsync
scheint es kein Äquivalent zu gebencp --reflink=always
, was eine enorme Datenmenge einsparen kann, wenn in ein Dateisystem kopiert wird, das dies unterstützt (es werden also Copy-on-Write-Kopien erstellt Daten, die dem Original und der Kopie gemeinsam sind (was natürlich zunächst alles ist), werden nur einmal gespeichert.rsync
ist jedoch besser in der Aktualisierung von CoW-Kopien mit--inplace
.quelle