Ich habe zwei 300-GB-Dateien auf verschiedenen Volumes:
- verschlüsselte lokale Sicherung
- verschlüsselte 'Remote'-Sicherung auf dem NAS).
Diese beiden Dateien sind vom Design her identisch und größtenteils (> 90%) inhaltlich identisch ...
Gibt es ein effizientes Tool, um diese Dateien zu „synchronisieren“ und nur über die verschiedenen Abschnitte zu kopieren, damit die Zieldatei mit der Quelle identisch wird?
Vielleicht etwas, das Prüfsummen von Blöcken erstellt, um das herauszufinden, weiß ich nicht ... (etwas effizienter als cp -f
... rsync würde afaik auch die gesamte Quelldatei zum Überschreiben greifen)
backup
encryption
rsync
automation
Frank Nocke
quelle
quelle
Antworten:
rsync
kann verwendet werden, um dies zu tun.--no-whole-file
oder--no-W
Parameter verwenden die Synchronisierung auf Blockebene anstelle der Synchronisierung auf Dateiebene.Testfall
Generierte zufällige Textdateien unter Verwendung
/dev/random
und großer Teile von Textdateien von Websites wie folgt. Diese 4 Dateien unterscheiden sich in allen Inhalten.tf_2.dat
ist unsere Zieldatei.Kopieren Sie sie dann mit auf eine andere Festplatte
rsync
(das Ziel ist leer).Die folgende Statistik wurde empfangen.
Jetzt füge ich die Dateien zusammen, um eine neue Datei zu erstellen, die ca. 60% alte Daten enthält.
Jetzt synchronisiere ich die beiden Ordner, diesmal mit der
--no-W
Option.Sie können sehen, dass große Datenmengen übereinstimmen und beschleunigt werden.
Als nächstes versuche ich es erneut. Dieses Mal füge ich mehrere Shell-Dateien mit dem Ziel (
tf_2.dat
) zusammen, sodass die Änderung ~ 2% beträgt.Und wieder mit synchronisieren
rsync
.Wir sehen eine große Übereinstimmung und Beschleunigung, die eine schnelle Synchronisierung ermöglichen.
quelle
-no-whole-file
impliziert--inplace
( diese Leute wundern sich über die entgegengesetzte Richtung). - So oder so kann es wahrscheinlich nicht schaden, diesen Parameter auch hinzuzufügen.--inplace
, aber das hat nicht funktioniert.--inplace
nur führt , dass die Daten zuerst in eine parallelen Datei kopiert werden (a .hidden ein, wie ich langsam das Gigabyte beobachten konnte Aufbau) und erst dann die alten zu löschen und die tmp - Datei auf den Namen umbenennen ... wie auch immer, Mit -no-ganze-Datei sollte dies sowieso ein Muss sein.Sie können auch versuchen, https://bitbucket.org/ppershing/blocksync zu verwenden (Haftungsausschluss: Ich bin der Autor dieser speziellen Gabel). Ein Vorteil gegenüber rsync besteht darin, dass die Datei nur einmal gelesen wird (soweit ich weiß, kann rsync nicht davon überzeugt werden, dass zwei Dateien unterschiedlich sind, ohne die Prüfsumme zu berechnen, bevor die Delta-Übertragung gestartet wird. Es ist unnötig zu erwähnen, dass 160 GB Festplatten zweimal gelesen werden ist keine gute Strategie). Ein Hinweis zur Vorsicht: Die aktuelle Version von Blocksync funktioniert gut über kurze RTT-Verbindungen (z. B. Localhost, LAN und lokales WLAN), ist jedoch für die Synchronisierung über große Entfernungen nicht besonders nützlich.
quelle