Zum Inhalt springen

rdiff-backup

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. November 2017 um 23:17 Uhr durch 2003:cd:53f2:8001:595f:9623:175:6bc (Diskussion) (Genauere Lizenzangabe - Ersichtlich aus Sourcecode-Paketen (Datei "COPYING")). Sie kann sich erheblich von der aktuellen Version unterscheiden.
rdiff-backup
Basisdaten

Hauptentwickler Edward Ned Harvey
Ben Escoto
Aktuelle Version 1.2.8
(März 2009)
Betriebssystem Linux, macOS, Windows (via Cygwin)
Programmier­sprache Python
Kategorie Datensicherung
Lizenz GPLv2
rdiff-backup.nongnu.org

rdiff-backup ist eine für Linux entwickelte Datensicherungssoftware, mit der sogenannte inkrementelle Backups erstellt werden können.

Besonderheiten

Die Besonderheit von rdiff-backup besteht darin, dass neue oder geänderte Dateien jeweils in die Vollsicherung eingepflegt werden, während ältere und gelöschte Dateiversionen als Inkremente (sogenannte „reverse deltas“) gespeichert werden. Die Vollsicherung ist bei rdiff-backup jederzeit als normales Verzeichnis zugänglich - die Wiederherstellung des zuletzt gesicherten Datenbestandes geschieht also durch einen simplen Kopiervorgang (von Hand, oder mittels cp oder rsync). Frühere Dateiversionen oder Datenbestände müssen mittels rdiff-backup selbst wiederhergestellt werden.

Im Gegensatz dazu muss bei üblichen inkrementellen Backups, welche „forward deltas“ verwenden, der aktuelle Datenbestand mittels Inkrement-Dateien rekonstruiert werden, und nur der Datenbestand, der während der letzten Vollsicherung vorlag, kann unkompliziert wiederhergestellt werden.

rdiff-backup unterstützt auch die Sicherung auf Netzwerk-Server. Um neue Dateien bzw. neue Dateiversionen zu erkennen, verwendet rdiff-backup den Dateinamen, den Dateityp, die Dateigröße, die Änderungszeit (mtime) und die Dateiberechtigungen. Eine Prüfsumme wie SHA-1 wird nicht verwendet. Aus diesem Grund kann rdiff-backup etwa keine TrueCrypt-Containerdateien sichern, da die Dateigröße und Änderungszeit nicht verändert wird, um die Datei besser verbergen zu können.

Übersicht über die Inkrement-Dateien

Im Backup-Verzeichnis (/rdiff-backup-data/increments) findet man für die Inkremente folgende Datei-Endungen - "Datum" entspricht jeweils der Zeitangabe, und "gz" steht für eine mit gzip komprimierte Datei:

  • .Datum.missing für eine Datei oder ein Verzeichnis, welches zum Zeitpunkt des Backups noch nicht existiert hat. Dies ist jeweils eine leere Datei mit 0 bytes Größe.
  • .Datum.diff.gz für eine Datei, die sich seit dem letzten Backup geändert hat.
  • .Datum.snapshot.gz für eine Datei, die seit dem letzten Backup gelöscht oder verschoben wurde. Diese kann ohne Umschweife für die Wiederherstellung der Datei verwendet werden (siehe unten).
  • .Datum.dir für ein Verzeichnis, dessen Inhalt sich seit dem letzten Backup verändert hat.

rdiff-backup-fs

Mit einem Werkzeug namens rdiff-backup-fs ist es möglich, das gesamte Backup als Laufwerk zu mounten. Es erscheinen dann entweder eine bestimmte Anzahl Verzeichnisse, die den damaligen Quellverzeichnissen zu den jeweiligen Inkrement-Zeitpunkten entsprechen - mittels einer Option kann man das Backup aber auch so mounten, dass die derzeit aktuelle Vollsicherung angezeigt wird - aber mit sämtlichen Dateiversionen, wie sie zu jedem Inkrement-Zeitpunkt existierten.[1] Auf diese Weise kann der Benutzer - wie bei rsnapshot - auf "Schnappschüsse" des Datenbestandes direkt zugreifen.

Anwendungsbeispiele

Backup

Das Backup wird einfach mittels rdiff-backup -v N --print-statistics Quellverzeichnis Backupverzeichnis durchgeführt. Je nachdem muss man sudo voranstellen, damit auch Dateien kopiert werden, für die der angemeldete Nutzer keine Zugriffsberechtigungen besitzt. -v N und --print-statistics geben zusätzliche Informationen über den Backup-Vorgang an und können weggelassen werden. N ist eine Zahl von 0 bis 9.

rdiff-backup --exclude AusgeschlossenesVerzeichnis Quellverzeichnis Backupverzeichnis schließt ein bestimmtes Verzeichnis von den Backups aus. Dies kann zum Beispiel beim Browser-Cache sinnvoll sein.

Die Problematik von Dateien, deren Größe und Bearbeitungsdatum trotz einer Änderung des Inhalts dieselben bleiben, kann wie folgt umgangen werden: rdiff-backup --compare-full Quellverzeichnis Backupverzeichnis vergleicht die Dateien im Quellverzeichnis und Backup bitweise, oder rdiff-backup --compare-hash Quellverzeichnis Backupverzeichnis vergleicht die Dateien mittels SHA-1-Prüfsummen. Ein Backup findet dabei aber nicht statt. Im Quellverzeichnis kann die Änderungszeit der betroffenen Dateien sodann mit touch auf die aktuelle Zeit umgestellt werden, und so wird die Datei dann vom nächsten Backup erfasst.

Entfernung alter Backups

rdiff-backup kann nur die ältesten Inkremente löschen. Dies geschieht mit rdiff-backup --remove-older-than X Backupverzeichnis, wobei X entweder ein Datum ist (z. B. 2014-12-12), oder eine Zeitspanne wie 5D (für "fünf Tage") oder 1M (für "einen Monat").

Wiederherstellung

Die Wiederherstellung geschieht mit rdiff-backup -r Zeit Backupverzeichnis Zielverzeichnis. „Zeit“ ist beispielsweise „now“, ein Datum oder eine Zeitspanne. Als Zeitspanne kann man etwa „5D“ angeben (um den Zustand von vor 5 Tagen wiederherzustellen), oder „3h20m“ für jenen vor 3 Stunden und 20 Minuten. Noch einfacher ist aber cp -a Backupverzeichnis Zielverzeichnis, wenn man den letzten Backup-Stand wiederherstellen will.

Gezielt und trotzdem ziemlich relativ einfach lässt sich eine alte Datei oder ein älteres Verzeichnis wieder herstellen, wenn man im Verzeichnis /rdiff-backup-data/increments des Backup-Verzeichnisses die entsprechende Inkrement-Datei ausfindig macht:

rdiff-backup Inkrementdatei Zielverzeichnis
rdiff-backup Inkrementdatei Zieldatei

Dies gelingt mit allen Inkrementdateien – außer mit solchen, welche die Dateiendung ".missing" tragen. Diese Inkrementdatei zeigt bloß an, dass eine Datei beziehungsweise ein Verzeichnis zum angegebenen Zeitpunkt nicht existiert hatte.

Die Wiederherstellung einer gelöschten Datei geschieht sogar noch einfacher: Hierzu muss man die Inkrement-Datei mit der Dateiendung ".snapshot.gz" ausfindig machen, ins gewünschte Verzeichnis hinüberkopieren, mit gzip entpacken, und den Dateinamen anpassen (etwa "Lebenslauf.doc.2014-10-10T09:23:50+02:00.snapshot" zu "Lebenslauf.doc" umbenennen).

Statistiken

rdiff-backup-statistics Backupverzeichnis gibt verschiedene Statistiken an, wie zum Beispiel die Angabe jener Verzeichnisse, welche sich über alle Backups hinweg am stärksten verändert hatten.

rdiff-backup -l Backupverzeichnis zeigt das Datum der Vollsicherung als auch der Inkremente an. Für die (kumulativen) Dateigrößen der verschiedenen Inkremente kann man schließlich rdiff-backup --list-increment-sizes Backupverzeichnis benutzen.

Siehe auch

Einzelnachweise

  1. http://manpages.ubuntu.com/manpages/trusty/en/man1/archfs.1.html (abgerufen am 9. Oktober 2014)