cp oder rsync, lohnt sich cp wirklich?

8

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?

Sojus
quelle
4
Manchmal ist der Aufwand für das Vergleichen weitaus aufwendiger als das blinde Kopieren der Bytes.
Bahamat
Gleiche Frage mit besserer Antwort: serverfault.com/questions/43014/…
Daniel

Antworten:

9

cpist ein Teil von Coreutils, daher ist es überall vorhanden. Darüber hinaus wurde es hauptsächlich zum Kopieren von Dateien auf einem Computer entwickelt.

rsyncist 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. Hat rsyncauch 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.

eilen
quelle
6

Der Hauptgrund, den Sie nicht rsyncfür jeden Kopiervorgang verwenden möchten , ist der hohe rsyncRechenaufwand. rsyncScannt 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, rsyncwenn Sie etwas Übertragungszeit sparen können. Verwenden Sie nur nicht, rsyncwenn cpdas Gleiche erreicht werden könnte.

Was ich normalerweise mache, bringen Sie zuerst die Daten mit regulären Kopiermethoden. Dann rsyncfür nachfolgende Änderungen, wenn diese Unterschiede genutzt werden können.

JM Becker
quelle
Ist es ein hoher Preis, wenn man bedenkt, wie leistungsfähig unsere Prozessoren heute sind?
Sojus
3
Groß ist subjektiv und würde sich abhängig von der Anzahl der Dateien im Verhältnis zur Datengröße im Vergleich zur E / A ändern. Mein Hauptpunkt wäre, dass es unabhängig von den heutigen Prozessoren nicht unbedeutend ist. Eine Sache, an die man sich bei den heutigen Prozessoren erinnern sollte, muss sich immer noch mit den heutigen Daten befassen.
JM Becker
Einverstanden. CPUs werden im luftleeren Raum nicht schneller. Einer der besten Gründe für GHz-CPUs ist das Gigabit-Netzwerk: Eine langsamere CPU kann eine E / A-Pipe einfach nicht so voll halten. Computer sind in der Regel so ausgewogen, wie wir sie herstellen können. Nehmen Sie etwas CPU-Leistung weg, und ein Teil der E / A-Kapazität wird leer. Wenn Sie den E / A-Bedarf erhöhen, läuft die CPU mehr im Leerlauf und wartet auf E / A.
Warren Young
3

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 Unterschieden rsyncreduziert 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.

scai
quelle
Also
Sojus
2
@ Sojus, das gilt für Daten, die sich in Bezug auf andere Daten geändert haben. Je kleiner das Diff, desto mehr rsyncwird bevorzugt. Aber wenn es keinen Unterschied gibt, rsyncbringt es nur Overhead ohne zusätzlichen Nutzen.
JM Becker
@ TechZilla Ich denke du meinst, wenn es nichts gemeinsam gibt. Wenn es keinen Unterschied gibt, wird rsync nur vorzeitig beendet, da nichts kopiert werden muss, was es weitaus bevorzugter macht.
Izkata
@Izkata: Es gibt mindestens eine Möglichkeit rsync, den doppelten E / A-Overhead für zwei identische Dateien im Vergleich zu blind zu haben cp: eine geänderte Änderungszeit. Sie müssten geben --size-only, um dies zu beheben. Die einzige andere Möglichkeit, dies zu rsyncumgehen, 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.
Warren Young
3

Abgesehen von den Gemeinkosten bei einem großen oder nicht vorhandenen Diff rsyncscheint es kein Äquivalent zu geben cp --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. rsyncist jedoch besser in der Aktualisierung von CoW-Kopien mit --inplace.

Darael
quelle