Wie kann ich eine große Datei mit kleinen Änderungen sichern?

9

Wenn eine Reihe von Dateien (jeweils mehrere GB groß) und jede jeden Tag geringfügig geändert wird (an zufälligen Stellen, nicht nur am Ende angehängte Informationen), wie kann sie effizient kopiert werden? Ich meine, in dem Sinne, dass nur geänderte Teile aktualisiert werden und nicht die gesamten Dateien. Das würde den Unterschied zwischen dem Kopieren von Kb hier und da oder einigen GB bedeuten.

Quora Feans
quelle
Binärdiff? Ich denke, das ist eine Sache, aber ich glaube nicht, dass ich es tun diffwerde
Katze
@cat: diffMöglicherweise können Unterschiede gemeldet werden, aber hier besteht das Problem darin, die kleinen Unterschiede zu kopieren.
Quora Feans
Nun, ich dachte, kopieren Sie einfach die Unterschiede - rsyncist besser
Katze

Antworten:

25

Das rsync- Programm macht genau das. Von der Manpage:

Es ist berühmt für seinen Delta-Transfer-Algorithmus, der die über das Netzwerk gesendete Datenmenge reduziert, indem nur die Unterschiede zwischen den Quelldateien und den vorhandenen Dateien im Ziel gesendet werden. Rsync wird häufig für Backups und Spiegelungen sowie als verbesserter Kopierbefehl für den täglichen Gebrauch verwendet.

hlovdal
quelle
Tatsächlich wird rsync ausgeführt, während diese Antwort geschrieben wird, und alles auf diesem Computer wird auf meinem Dateiserver (mit zfs) gesichert.
Hlovdal
Für Sicherungszwecke möchte ich rdiff-backup ( nongnu.org/rdiff-backup ) empfehlen . Ich verwende es seit einigen Jahren, um vier verschiedene Maschinen mit guten Ergebnissen zu sichern.
Thomas Padron-McCarthy
Wikipedia bietet eine gute Erklärung dafür, wie rsyncDateiblöcke mithilfe fortlaufender Prüfsummen verglichen werden .
Adam Katz
Ich habe versucht, mit rsync auf ein altes VM-Festplatten-Image zurückzugreifen, auf dem nur wenige Dateien geändert wurden. Leider scheint rsync die gesamte Datei erneut zu kopieren (es dauert ~ 3 Minuten, bis ~ 300 MB / s geschrieben sind). rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
feedc0de
8

Sie möchten wahrscheinlich ein modernes deduplizierendes Sicherungsprogramm. Schauen Sie sich BorgBackup an .

Dadurch werden mehrere Sicherungen für jede Version Ihrer großen Datei erstellt, der gemeinsame Inhalt wird jedoch von den verschiedenen Versionen gemeinsam genutzt, sodass der für eine bestimmte Version Ihrer großen Datei verwendete Gesamtspeicherplatz nur geringfügig größer ist als der gesamte Speicherplatz für eine einzelne Version, vorausgesetzt, die verschiedenen Versionen unterscheiden sich nur geringfügig.

Faheem Mitha
quelle
5

Wenn Sie in irgendeiner Weise auf E / A beschränkt sind, verwenden Sie ein Dateisystem wie BTRFS oder ZFS, das direkt inkrementelle Sicherungen unterstützt, ohne die Unterschiede in den Dateien feststellenrsync zu müssen , z. B. was zu tun ist.

Die Verwendung rsyncwird langsam und sehr E / A-intensiv sein.

Denn wenn die Anwendung, die Änderungen an den Dateien schreibt, in irgendeiner Weise auf E / A beschränkt ist, wird die Verwendung rsyncder Anwendung erhebliche E / A-Zyklen in Anspruch nehmen, was genau der Grund ist, warum die Dateien vorhanden sind. Wenn Ihr Sicherungsprozess oder System auf E / A beschränkt rsyncist, werden E / A-Zyklen von Ihrer verfügbaren Sicherungsbandbreite entfernt.

Nur Google "rsync ist langsam". Beispiel: rsync ist beim Kopieren von Dateien von nfs-share in das lokale Verzeichnis sehr langsam (Faktor 8 bis 10) im Vergleich zu cp

Andrew Henle
quelle
Dies hat den zusätzlichen Vorteil, dass alle Metadaten erhalten bleiben, ohne dass Sie danach suchen müssen, und immer wissen, dass Ihre Sicherungskopie so gut ist wie die Originalkopie. rsync ist für den allgemeinen Gebrauch in Ordnung, aber wenn Sie ein modernes Dateisystem haben, wäre es dumm, seine Vorteile zu ignorieren.
user121391