|
Inhaltsverzeichnis
DirvishDurch die Nutzung des IPFire als Homeserver mittels des Samba-AddOn stellt sich die Frage nach einer Datensicherung für alle Userdaten. Auch die digitalen Fotos, welche so schön in der Webgalerie weltweit erreichbar sind, sollten unbedingt ordentlich gesichert werden, schließlich lassen sich dafür keine Negative mehr im Schrank finden. Im Folgenden wird beschrieben, wie mit Hilfe von Dirvish ein einfaches, aber wirkungsvolles Backup auf eine USB-Festplatte gesichert werden kann. Dirvish ist ein Perl-Script, welches mit Hilfe von rsync wöchentlich/täglich/stündlich ein vollständiges Backup erstellt. Dazu werden sogenannte Hardlinks verwendet. Jede Datei im Linux-Filesystem wird durch einen Hardlink beschrieben. Erzeugt man einen zweiten Hardlink auf die selbe Datei, so ist die Datei trotzdem nur einmal da. Die Datei wird jedoch erst gelöscht, wenn man den letzten Hardlink löscht. Diese Eigenschaft macht sich Dirvish zu nutze. Es schreibt bei jedem Backup eine vollständige Kopie der zu sichernden Dateien als Hardlink. Ändert sich am Dateisystem nichts, werden folglich nur Hardlinks gechrieben, welche kaum Plattenplatz benötigen. Somit kann man jeden Tag ein vollständiges Abbild (Snapshot) erzeugen, ohne dass man ein riesiges Backupmedium braucht. rsync-AddOn installierenWie jedes andere AddOn mittels Pakfire installieren. Dirvish herunterladenDie aktuelle Version von Dirvish HIER herunterladen und mittels WinScp auf den IP-Fire nach /root/dirvish/… kopieren. Das Verzeichnis dirvish vorher mit F7 anlegen. Mit Putty auf der Konsole des IP-Fire als root einloggen und folgende eingeben: cd /root/dirvish tar -xzf dirvish-xyz.tgz ./install.sh Jetzt werden die Systemvariablen abgefragt: perl to use (/usr/bin/perl) -> mit Enter bestätigen What Installation prefix should be used?() -> /var/ipfire/dirvish /var/ipfire/dirvish doesn't exist, create it? (n) -> y Die nächsten Abfragen sind alle mit Enter bzw. yes zu bestätigen. Dirvish wird damit nach /var/ipfire/dirvish/… installiert. Dort liegen alle AddOns von IP-Fire, daran sollte man sich also halten. Fehlende Perl-Module installierenDirvish benötigt zusätzliche Perl-Module, welche nicht Bestandteil von IP-Fire sind. Da CPAN ebenfalls nicht Bestandteil von IP-Fire ist, werden die fehlenden Module einfach bei CPAN herunter geladen. Es werden die folgenden Module benötigt: Time::JulianDay Time::ParseDate Time::Period Time::Timezone Diese *.pm-Dateien werden wieder mittels WinScp auf den IP-Fire in den Pfad /usr/lib/perl5/5.8.8/Time/... kopiert. Backup-Medium definierenAls Backup-Medium nutze ich eine externe USB-Festplatte. Man kann jedoch genau so gut eine zweite interne Festplatte nutzen bzw. das Backup auf einen entfertnten Linux-Rechner schreiben. Auf keinen Fall sollte man das Backup auf die gleiche Festplatte scheiben, auf der schon die Daten liegen. Damit hätte man im Fall eines Festplatten-Crashs auch kein Backup. Die weitere Beschreibung geht von einer USB-Festplatte aus. Diese sollte als FAT32 formatiert sein, damit man sie auch an Windows-Rechnern einfach lesen kann. Auf der Weboberfläche vom IP-Fire wird die externe Festplatte unter „Dienste→Extra-HD“ als /dev/sd… angezeigt. Hier legt man den Mountpoint fest, Ich habe dafür /mnt/usb gewählt. Dirvish einrichtenEs gibt hier ein sehr gutes Howto für Dirvish. Der Einfachheit halber werde ich daher hier nur kurz die unbedingt nötigen Schritte erläutern. Das Prinzip von Dirvish besteht darin, sogenannte 'Vault's (Tresore) zu definieren, in denen das Backup abgelegt wird. Ein 'Vault' ist ein Verzeichnis auf dem Backup-Medium. Es gibt eine übergeordnete Konfig-Datei und je Vault noch eine spezielle. Zunächst editieren wir die übergeordneten Datei master.conf cd /var/ipfire/dirvish/etc/ touch master.conf Die Datei hat muss den folgenden Inhalt haben: Datei: /etc/master.conf ### /var/ipfire/dirvish/etc/dirvish/master.conf
#zunächst wird das Backup-Medium konfiguriert
bank:
/mnt/usb
# xdev: 1/0 - folgt/folgt nicht symbolischen links
xdev: 1
index: gzip
image-default: %Y%m%d-%H:%M
exclude:
lost+found/
core
.nfs*
*.tmp
*.TMP
.recycle/
# Definition der zu sichernden Vaults (Tresore), die Namen muessen nicht
# identisch sein mit den tatsaechlischen Namen der Verzeichnisse!
#
Runall:
vault1
vault2
#
# nicht vergessen:
# einen neuer tresor (vault) mit dem Befehl 'dirvish --vault Tresorname --init' initialisieren!!!
# wie lange werden standardmaessig alle backups aufgehoben?
expire-default: +30 days
# vom Standard (siehe oben) abweichend...
expire-rule:
# Minute
# Stunde
# Day of month
# Month
# Day of week (Sonntag ist Nr. 1!)
# Zeit bevor Loeschung
# Min Hr Dom Mon Dow STRFTime_FMT
* * 1 * * +3 months
Expire-default definiert für jedes Backup eine Haltbarkeit von 30 Tagen. Abweichend davon wird mit expire-rule für das Backup am ersten des Monats eine Haltbarkeit von 3 Monaten vorgeschrieben. Unter Runall sind alle Vaults eingetragen, die es gibt. Jetzt definieren wir diese Vaults: cd /mnt/usb mkdir vault1 In jedem Vault muss es ein Verzeichnis 'dirvish' geben, in dem Dirvish seine log-Files für dieses Vault schreibt. Zusätzlich kommt hier noch die Konfigurationsdatei für dieses Vault hinein. cd /mnt/usb/vault1 mkdir dirvish cd dirvish touch default.conf Die default.conf muss den folgenden Inhalt haben: Datei: /mnt/usb/vault1/dirvish/default.conf ## /mnt/usb/vault1/dirvish/default.conf
# die Conf-Datei für Dirvish für den Tresor (vault) vault1
client: server #hier kommt der Hostname hin
tree: /var/ipfire/samba/user1
exclude: *.bak
*~
.*
*.tmp
lost+found/
# hier können noch weitere Haltbarkeiten, abweichend
# von der /var/ipfire/dirvish/etc/dirvish/master.conf, für dieses vault definiert werden
#
# expire-default: +2 days
# expire-rule:
# Min Hr Dom Mon Dow STRFTIME_FMT
In der ersten Zeile wird dirvish angewiesen, auf seinen eigenen Rechner den in der zweiten Zeile angegebenen Pfad zu sichern. Die zweite Zeile ist also entsprechend anzupassen. Sollen weiteren Pfade gesichert werden, so ist ein neues vault anzulegen. Dirvish initalisierenDirvish schaut vor jedem Backup nach, ob ein altes Backup existiert, welches gemäß der Expire-Regel gelöscht wird. Da noch keine Backups existieren, muss das erste Backup zunächst erzeugt werden: /var/ipfire/dirvish/bin/dirvish --vault vault1 --init Dies dauert eine ganze Weile, abhängig davon, wie viele Daten gesichert werden. Nach erfolgter Arbeit befinden sich die gesicherten Daten unter /mnt/usb/vault1/... in einem Verzeichnis mit einem Namen, aus dem die Startzeit des Backups hervorgeht. Der Befehlt ist für jedes vault zu wiederholen. Dirvish automatisierenZum automatischem Start des Backups ist ein cronjob einzurichten. Zunächst wird ein script erzeugt, welches die erforerlichen Befehle enthält: cd /etc/fcron.daily touch dirvish.cron chmod 700 dirvish.cron Der Inhalt der Datei dirvish.cron ist folgermaßen: Datei: /etc/fcron.daily/dirvish.cron /var/ipfire/dirvish/bin/dirvish-expire /var/ipfire/dirvish/bin/dirvish-runall Dirvish überwachenJetzt, wo alles funktioniert und eingerichtet ist, kann man den nächsten Schritt tun. Eine einfache Möglichkeit der Überwachung, ob Dirvish seine Arbeit auch ordentlich erledigt hat, bietet das http://www.dirvish.org/viewvc/contrib/admin/DailyEmailScript/dirvish-status.sh? view=log|dirvish-status.sh|Script , welches den Status von Dirvish ausliest und per E-Mail versendet. Es wird nach /var/ipfire/dirvish/bin kopiert und ausführbar gemacht: chmod 700 /var/ipfire/dirvish/bin/dirvish-status.sh Danach editieren wir es noch wie folgt: In den ersten Zeilen ist der Pfad zu den Vaults festzulegen (hier also /mnt/usb). Der Eintrag des Mail-Empfängers wird auskommentiert. Die letzten Zeilen sind wie folgt anzupassen: Datei: ...
echo "Disk usage:"
/bin/df -h
#echo
#cat $tmpfile
#) | mail -s "${WARNSUB}Dirvish status (${YESTERDAY}@`hostname`)" $MAILTO
)
sendEmail -f Absender@web.de -u "${WARNSUB}Dirvish status (${YESTERDAY}@`hostname`)" -o message-
file=$tmpfile -t Empfänger@web.de -s smtp.web.de -xu Absender-username -xp Absender-Passwort
rm $tmpfile
Das Beispiel geht von einem E-Mail-Konto des Absenders bei web.de aus und ist natürlich anzupassen. Absender und Empfänger können gleich sein. Das Script geht davon aus, dass Dirvish nicht die Uhrzeit im Verzeichnisnamen vermerkt. Daher muss die master.conf nochmals editiert werden: Datei: #/var/ipfire/dirvish/etc/master.conf ... #image-default: %Y%m%d-%H:%M image-default: %Y%m%d ...
Jetzt ist jedoch nur noch ein Backup am Tag möglich, aber die Probephase ist ja vorbei Damit das ganze funktioniert, muss das Programm 'sendEmail' noch installiert werden. Einfach hier downloaden, mit WinScp auf den IP-Fire nach /root/ kopieren und mit cd /root tar -xzvf sendEmail-v1.55.tar.gz cp sendEMail-v1.55/sendEmail /bin/sendEmail chmod 700 /bin/sendEmail an die richtige Stelle kopieren. Jetzt das script mit in den Cronjob aufnehmen: Datei: #/etc/fcron.daily/dirvish.cron /var/ipfire/dirvish/bin/dirvish-expire /var/ipfire/dirvish/bin/dirvish-runall /var/ipfire/dirvish/bin/dirvish-status.sh Backup entfernter RechnerDirvish bietet die Möglichkeit, auf entfernte Rechnner mittels ssh zuzugreifen und Backups über das Netz zu erstellen. Damit erhält man zusätzlich zum Schutz gegen Hardwareausfälle auch noch einen Schutz gegen Diebstahl oder Feuer. Dazu sind in der jeweiligen default.conf die folgenden Zeilen anzupassen: Datei: ##default.conf vom vault1 client: user@domain.entfernter.rechner rsh: ssh -i /Pfad/zum/privaten/Schlüssel tree: /zu/sichernder/Pfad/auf/entferntem/Rechner ... Bedingung ist natürlich, dass
Eine genaue Beschreibung, wie die Schlüssel erzeugt und eingefügt werden, findet man im oben genannen Dirvish-HowTo. Nutzt man als Backupmedium eine externe USB-Festplatte, sollte man aufgrund der Datenmenge das initiale Backup direkt am entfernten Rechner erzeugen (dazu muss dort natürlich auch Dirvish installiert sein, aber wir wissen ja jetzt wie das geht) und dann nur noch die Änderungen täglich über das Internet übertragen. |
||