Wie führt RSYNC inkrementelle Sicherungen durch?

14

Woher weiß rsync, welche Dateien geändert werden und welche nicht? Protokolliert es seine Daten irgendwo in der Datei?

Da ich inkrementelle Sicherungen durchführen möchte, werden zuerst alle Dateien übertragen.

Meine Hauptfrage lautet also: ob ich die anfänglichen Dateien per FTP aber nicht per hochladen soll rsync. Überspringt rsyncweiterhin die vorhandenen Dateien oder lädt alles beim ersten Start hoch.

umläute
quelle

Antworten:

12

Rsync verfügt über eine Reihe von Flags, die steuern, was angezeigt und auf das Ziel kopiert werden soll. Am häufigsten wird das "-a" -Flag verwendet, welches das "Archive" -Flag ist. Dies ist wahrscheinlich das, was Sie wollen. Führen Sie rsync mit den "-av" -Flaggen aus und lassen Sie es zuerst die Daten prüfen, die Sie sichern möchten. Bei der nächsten Ausführung wird eine Blockprüfsumme der Datei erstellt, und es werden nur die Teile kopiert, die an vorhandenen Dateien geändert wurden, neue Dateien kopiert und nicht mehr vorhandene Dateien entfernt. Überprüfen Sie den Abschnitt mit den Optionen "-a" unter:

http://linux.die.net/man/1/rsync

Der erste Durchlauf ist bandbreitenintensiv, die folgenden Durchläufe sind höchstwahrscheinlich prozessorintensiv, verbrauchen jedoch im Vergleich zum ersten Durchlauf wenig Bandbreite. Es sei denn, Sie haben eine Menge Probleme mit Ihrem Datensatz.

Rsync ist es egal, wie Sie die Dateien in den Quell- oder Zielverzeichnissen haben. Es werden nur die Änderungen zwischen den beiden kopiert, es sei denn, Sie fügen Flags hinzu, um etwas anderes zu tun.

Wenn Sie protokollieren möchten, was geändert wurde, können Sie die Option "--log-file" verwenden. Alles in allem klingt so etwas wie das, was Sie wollen:

rsync -av --log-file=/var/log/rsync.log -e "ssh -l backup-user" backup-user@source-machine::module /nas01/backups
Ali Chehab
quelle
9

rsync macht nicht 'inkrementell', sondern eher 'differentiell'. Es werden keine Änderungen übertragen (bei denen Kenntnisse über einen vorherigen Lauf vorausgesetzt werden), sondern Unterschiede übertragen (durch Vergleichen der Quell- mit den Zieldateien).

eine Vereinfachung des Prozesses:

  • Überprüft zuerst die Dateigröße, das Erstellungs- / Änderungsdatum und die Flags. Wenn alles identisch ist, überspringe die Datei.
  • Wenn sich keine Datei mit diesem Namen auf dem Ziel befindet, kopieren Sie einfach die gesamte Datei.
  • Befindet sich eine Datei auf dem Ziel, werden Prüfsummen für jeweils 2 KB der Datei berechnet und an den Absender übertragen.
  • Der Absender vergleicht den Inhalt der Ursprungsdatei und vergleicht ihn mit dem Ziel und überträgt alle noch nicht vorhandenen Daten zusammen mit Verweisen auf übereinstimmende Daten. Damit kann das Ziel die gesamte Datei mit Teilen des alten Ziels und neuen Blöcken rekonstruieren.
Javier
quelle
5

rsync protokolliert keine Daten, prüft die Zeitstempel der Dateiänderungen und anschließend den Inhalt. Wenn Sie zuerst per FTP hochladen, ist dies in Ordnung - rsync überträgt nicht alle Daten erneut, sondern durchsucht wahrscheinlich den gesamten Inhalt und korrigiert Zeitstempel. aber es wird keine große Übertragung wieder geben.

pQd
quelle
5

Vielleicht bin ich pedantisch, aber inkrementelle Backups bedeuten, dass Sie zuerst ein vollständiges Backup haben. Dann haben Sie Sicherungskopien von Dateien, die seit dieser Sicherung geändert wurden. Dann haben Sie eine weitere Sicherung der Sicherungen geändert, die seit der vorherigen Sicherung usw. geändert wurde. Sie benötigen also die vollständige Sicherung und alle inkrementellen Sicherungen seit dieser Sicherung.

Die Verwendung des Archivierungsmodus ist also keine inkrementelle Sicherung . Ich denke, der Unterschied ist wichtig, weil man nicht rechtzeitig zurückgehen kann, um Dateien zu erhalten, bevor sie geändert wurden .

Wenn Sie eine echte Teilsicherung durchführen möchten, verwenden Sie Optionen wie --backup-dir. Es ist ein Beispiel hier .

Kyle Brandt
quelle
1
+1 für die Unterscheidung zwischen inkrementellen Sicherungen und Spiegeln (was bei rsync standardmäßig der Fall ist).
sleske
Ah ja! Spiegeln war das Wort, nach dem ich gesucht habe, ein guter Anruf :-)
Kyle Brandt
0

Wenn die eigentliche Frage lautet: "Ich möchte inkrementelle Sicherungen über rsync ausführen", stehen einige Optionen zur Verfügung. Ich benutze Dirvish:

http://www.dirvish.org/

Das Wiederherstellen ist einfach, da Sie Schnappschüsse erhalten: Mithilfe von Hardlinks erhalten Sie vollständige Schnappschüsse und sparen Platz, wenn eine Datei identisch ist. Intern wird die Option --link-dest von rsync verwendet:

--link-dest=DIR         hardlink to files in DIR when unchanged

Da rsync verwendet wird, wird auch Netzwerkbandbreite (und damit Zeit) eingespart, wenn die Änderungen sehr gering sind. Es funktioniert auch , wenn Sie Teer und sneakernet eine lokal erstellt dirvish Bild zuerst, wenn Sie viele Dateien und eine langsame Verbindung haben.

Alphax
quelle