Zum halben Preis
Clevere Datensicherung mit Ccollect
Bequemer Start
Damit kann es losgehen. Möchten Sie die Terminalausgaben von Ccollect in einem Logfile sammeln, dann starten Sie statt ccollect das mitgelieferte Shellskript logwrapper, das sich in dem Verzeichnis befinden muss, das $CCOLLECT_CONF/logwrapper/destination angibt. Damit die Backupsoftware sicher Leserechte für alle Dateien erhält, benutzen Sie am besten sudo, was ein Eintrag wie
%User User ALL = NOPASSWD: /home/User /ccollect/tools/ccollect_logwrapper.sh
in /etc/sudoers vereinfacht. Das ist auch die Voraussetzung, um das Backup aus einem nicht-interaktiven Skript heraus starten zu können. Bleibt noch ein Problem: Bei ständig aktiven Rechnern kann man das Aufrufschema für das Backup problemlos in der Crontab hinterlegen. Das klappt aber bei Systemen, die nur unregelmäßig laufen – etwa bei Laptops – schlecht: Hier ist nicht garantiert, dass die Maschine sich in der Nähe der externen Backup-Platte befindet und eingeschaltet ist, wenn der Cronjob laufen soll.
Aus diesem Grund entstand das Perl-Skript bm.pl[4], das automatisch ein passendes Intervall wählt. Dazu durchforstet es alle bereits existierenden Dateien im Backup-Verzeichnis und merkt sich für jedes Intervall das jeweils jüngste File. Nun prüft es, ob die jüngste Monatssicherung aus dem aktuellen Monat stammt – falls nicht, startet es eine neue; falls ja, schaut es nach, ob die jüngste Wochensicherung in der aktuellen Woche angefertigt wurde. Ist das nicht der Fall, startet es eine neue; wenn doch, prüft das Skript, ob heute bereits eine Tagessicherung lief. Gab es die noch nicht, läuft sie nun an.
Das Skript benötigt das Perl-Modul Date::Calc, das in der Regel vorhanden ist, sich aber sonst meist leicht über das Paketmanagement der Distribution nachinstallieren lässt. Ansonsten gilt es in den Zeilen 10 und 11 noch das Zielverzeichnis und den Ort des Logwrapper-Skripts den eigenen Wünschen anzupassen. Wer ganz andere Intervalle als daily, weekly, monthly verwenden will, muss sich allerdings ein wenig mit Perl auskennen.
Bequem starten
Um die Bequemlichkeit noch etwas zu steigern, starten Sie bm.pl nicht direkt, sondern aus dem kurzen Shellskript backup.sh (Listing 1). Das prüft, ob die Backup-Platte tatsächlich eingehängt ist, und vermeidet so lästige Überläufe der Root-Partition. Außerdem reduziert es die Anzahl der archivierten Logs auf drei. Hierfür müssen Sie die Backup-Platte in /etc/fstab eintragen. Das Shellskript sollten Sie mit administrativen Rechten starten, damit es im Zweifelsfall versuchen kann, die Backup-Platte nachzumounten und die überzähligen Logs zu löschen, auch wenn das Logverzeichnis root gehört.
Eine Alternative wären weitere Sudoers-Einträge für rm und mount. Als ultimative Steigerung könnten Sie schließlich den gesamten Backup-Prozess automatisch über eine Udev-Regel beim Anstecken der externen USB-Backup-Platte triggern.
#!/bin/bash
function mkbackup {
find /etc/ccollect/logwrapper/destination -type f -atime +2 -exec rm {} \;
/home/<I>user<I>/bm.pl &
}
mkdir -p /media/backupdisk
grep backupdisk
/etc/mtab &> /dev/null
if [ $? == 0 ]
then
mkbackup
else
mount /media/backupdisk
if [ $? == 0 ]
then
mkbackup
else
echo "Error mounting backup disk"
fi
fi
Glossar
Hardlink
Zusätzliche Verzeichniseinträge, die auf eine Datei verweisen. Ein Hardlink ist mit dem ursprünglichen Eintrag gleichberechtigt und von diesem nicht zu unterscheiden. Jeder Hardlink erhöht den Link-Counter im Inode der Datei, den
ls -lals Ziffer nach der Spalte Zugriffsrechte ausgibt. Das Löschen eines Links vermindert diesen Zähler. Sinkt er auf Null, gilt die ganze Datei als endgültig gelöscht.
[1] Rsync: Heike Jurzik, Synchroner Datenstrom, LinuxUser 04/2006, S. 90, http://www.linux-user.de/ausgabe/2006/04/090-rsync/
[2] Rsnapshot: Kristian Kißling, "Heavy Rotation", LinuxUser 08/2006, S. 34, http://www.linux-user.de/ausgabe/2006/08/034-rsnapshot/
[3] Ccollect: http://www.nico.schottelius.org/software/ccollect
[4] Listing bm.pl: http://www.linux-user.de/Downloads/2009/08/
[5] Udev: Eric Amberg, "Sauber verzahnt", LinuxUser 09/2008, S.76, http://www.linux-community.de/artikel/16484/



