Rdiff-backup unter Debian auf SMB/CIFS-Mount
Für inkrementelle Backups unter Debian Lenny kommt man an rdiff-backup wohl nicht vorbei. Es erstellt Rückwärts-Inkremente -- der aktuelle (neuste) Backup-Stand liegt also jederzeit als einfache Datei vor. Vorherige Backup-Stände kann man aus dem aktuellen Stand und den Rückwärts-Deltas wiederherstellen. Das funktioniert entweder über die Kommandozeile oder mit einem Web-Interface wie z.B. rdiff-web.
Das Ganze funktioniert prinzipiell auch auf per SMB oder CIFS gemounteten Shares, zum Beispiel auf eine NAS-Box. rdiff-Backup kümmert sich sogar um das Quoten von Dateinamen, wenn das gemountete Filesystem im Gegensatz zum ext3-Filesystem des Lenny-Servers nicht case-sensitive ist. Allerdings funktioniert das erst so halbwegs reibungslos ab rdiff-backup 1.2.5 - für Etch ist also selber kompilieren angesagt.
In meinem Fall führte ein Backup auf die per SMBFS gemountete NAS aber zu einem komischen Quoting-Schema ("A-Z-"*/:<>?\|;"). Das resultierte dann in langsamen Backups und rdiff-web wollte auch nicht mehr funktionieren.
Loopback Tricks
Diese Anleitung brachte mich dann auf eine Idee, mit der man die ganzen SMB-Eigenheiten umgehen kann: Man erstellt eine große Datei auf der NAS-Box, erstellt in dieser Datei ein ext3-Dateisystem und mountet es als Loopback-Device. Das Backup erfolgt dann direkt auf diesen ext3-mount. So geht's:dd if=/dev/zero of=/mnt/nas/backup.ext3 bs=1M count=100 mkfs.ext3 /mnt/nas/backup.ext3 mount /mnt/nas/backup.ext3 -t ext3 -o,sync,loop,rw,noatime /mnt/backup
Unter /mnt/nas ist die NAS-Box gemountet. Darauf erstellen wir die Datei backup.ext3 (100MB in diesem Beispiel). Das ext3-Dateisystem in dieser Datei mounten wir nach /mnt/backup.
Der Performance hilft das jetzt nicht unbedingt...
Wir messen nach:
Davor:
--------------[ Session statistics ]-------------- StartTime 1232652246.00 (Thu Jan 22 20:24:06 2009) EndTime 1232652365.80 (Thu Jan 22 20:26:05 2009) ElapsedTime 119.80 (1 minute 59.80 seconds) SourceFiles 4670 SourceFileSize 16749169 (16.0 MB) ... --------------------------------------------------
Danach:
--------------[ Session statistics ]-------------- StartTime 1232652246.00 (Thu Jan 22 20:24:06 2009) EndTime 1232652365.80 (Thu Jan 22 20:26:05 2009) ElapsedTime 48.20 (48.20 seconds) SourceFiles 4670 SourceFileSize 16749169 (16.0 MB) ... --------------------------------------------------
Das war ein initiales Backup einer Dokuwiki-Installation. Ohne Quoting ist das ganze mehr als doppelt so schnell. Kann natürlich je nach Größe des Backup-Verzeichnisses, inkrementellen Backups oder Restores abweichen :)