rdiff-backup
rdiff-backup | |
---|---|
Basisdaten
| |
Hauptentwickler | Edward Ned Harvey Ben Escoto |
Aktuelle Version | 1.2.8 (März 2009) |
Betriebssystem | Linux, macOS, Windows (via Cygwin) |
Programmiersprache | 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
Weblinks
Einzelnachweise
- ↑ http://manpages.ubuntu.com/manpages/trusty/en/man1/archfs.1.html (abgerufen am 9. Oktober 2014)