kwrsync_backup

kwrsync_backup zieht ein Momentaufnahme (Snapshot) von lokalen wie entfernten Rechnern. Es benutzt, wie der Name schon vermuten lässt, das Programm rsync für die Erstellung der Snapshots. Um Speicherplatz zu sparen werden ausgiebig harte Links benutzt.
kwrsync_backup_cron kann vom Cron Dämon gestartet werden und macht das gleiche wie kwrsync_backup im Hintergrund.




1. Konfiguration

2. Server Konfiguration

2.1. Konfiguration

2.2. Exclude Datei

2.3. Include Datei

3. Ansicht

4. Backup

5. Beachtenswertes

5.1. NFS

5.2. SSH

6. Links




1. Konfiguration

Hier kann man kwrsync_backup global konfigurieren

Backupverz. In welchem Verzeichnis sollen die Backups gespeichert werden. Diese liegen dann unter Backupverz/hourly.0, hourly.1, ....

Bandbreite Manchmal kann es sinnvoll sein die Bandbreite, der Übertragung zu limitieren. Geben Sie hier einen Wert in Kbyte/s an (100 = 100 KByte/s.

Check_Platz Soll geprüft werden, ob noch ein gewisser Prozentsatz an Plattenplatz und Inodes frei ist (ja/nein)?

Minimum_Platz Geben Sie hier den Prozentsatz ein der maximal an Plattenplatz benutzt werden darf. Denken Sie daran das die Rotierung der Daten auch etwas Platz benötigt. Integerzahl zwischen 0 und <100 (Prozent). Ist die benutzte Kilobyte oder Inode Prozentzahl kleiner als die angegebene maximale Prozentzahl an Plattenplatz ($HDMINFREE), wird ein Backup durchgeführt.

Mountverz. Hier wird das Verzeichnis ausgewählt, welches ins Dateisystem vorher eingebunden werden muss, wo sich das Backup Verzeichnis befindet. Es muss bereits in der /etc/fstab konfiguriert sein.

Remote_shell Welche Shell soll für Übertragung genutzt werden. Zur Auswahl stehen ssh und rsh, falls sie installiert sind. Der ssh besitzt eine Kompression und überträgt alles verschlüsselt.

Server Server die zu sichern sind, getrennt durch ein Leerzeichen. Dies können IP-Adressen, Rechnernamen oder Rechnenername.domain.de (FQDN) sein.

Logdatei Logdatei in die die Ausgaben von kwrsync_backup geloggt werden sollen. Standard ist /var/log/kwrsync_backup.log.

Pre_Script Anngabe eines Script + Argumente (optional). Dieses Sript wird sofort ausgeführt bevor die Snapshots erstellt und rotiert werden.

Post_Script Angabe eines Script + Argumente (optional). Dieses Sript wird sofort ausgeführt nachdem die Snapshots erstellt und rotiert wurden.

User Wählen Sie einen Benutzer aus, der sich anstelle von "root" auf den zu sichernden Rechnern einloggen darf. Es werden nur Benutzer angeboten die auf diesem System installiert sind.

Dateisystemgrenze Bei "yes" wird das rekursive Sichern über Dateisystemgrenzen hinweg ausgeschaltet (yes/no).

Hardlinks erstellen Sollen Hardlinks bei identischen Dateien erstellt werden. Dies ist der beste Weg um spezielle Dateien, wie FIFOs, zu unterstützen und natürlich um Platz zu sparen. Schalten Sie dies ein (yes), wenn Ihr rsync (>=2.6.4) dies unterstützt.

Rotiere stuendlich Geben Sie eine Integer Zahl für die Anzahl der stündlichen Snapshots ein die behalten werden sollen. Standard ist 6.

Rotiere taeglich Geben Sie eine Integer Zahl für die Anzahl der täglichen Snapshots ein die behalten werden sollen. Standard ist 7.

Rotiere woechentlich Geben Sie eine Integer Zahl für die Anzahl der wöchentlichen Snapshots ein die behalten werden sollen. Standard ist 4.

Rotiere monatlich Geben Sie eine Integer Zahl für die Anzahl der monatlichen Snapshots ein die behalten werden sollen. Standard ist 6.

LVM lvcreate Angabe des LVM Programm lvcreate mit vollem Pfad.

LVM lvremove Angabe des LVM Programm lvremove mit vollem Pfad.

Snapshot Groesse Angabe der Grösse für den temporären LVM Snapshot.

Snapshot Name Name des LVM Snapshot. Standard ist lvmsnapshot.

VG Pfad Verzeichnis unter dem die Volume Groups (VG) liegen. Unter Linux ist dies /dev.

LVM Mountpunkt Angabe eines Mountpunkts für den temporären LVM Snapshot.

speichern Beim speichern wird überprüft, ob der Benutzer "root" schon eine Datei ~/.ssh/id_dsa.pub besitzt. Wenn nicht wird eine angelegt. Dabei wird auch gleich eine Datei ~/.ssh/authorized_keys.rsync angelegt, die den richtigen "rsync" Befehl enthält. Diese Datei können Sie anschliessend auf die zu sichernden Rechner (~/.ssh/authorized_keys, prüfen Sie Ihre "ssh" Konfiguration), in das Verzeichnis des ausgewählten Benutzers, kopieren.




2. Server Konfiguration

Für jeden konfigurierten Rechner, beziehungsweise der Konfiguration von Rsync Servern. wird eine Konfigurationsdatei angelegt und wenn man eine "exclude" oder "include" Datei benötigt auch diese. Diese befinden sich in:
/etc/kwtools/kwrsync_backup.d/rsync.conf
/etc/kwtools/kwrsync_backup.d/rsync-exclude.conf
/etc/kwtools/kwrsync_backup.d/rsync-include.conf
/etc/kwtools/kwrsync_backup.d/Rechnername.conf
/etc/kwtools/kwrsync_backup.d/Rechnername-exclude.conf
/etc/kwtools/kwrsync_backup.d/Rechnername-include.conf


2.1. Konfiguration

Rechner Angabe des Rechners von dem Daten gesichert werden sollen.

Quelle Angabe der Quelle die gesichert werden soll. Dies kann ein Verzeichnis oder eine Datei sein.

Ziel Auswahl des Ziels, relativ zum Backup Verzeichnis, wohin gesichert werden soll. Dies ist meist der Rechnername, kann aber auch ein Verzeichnis sein. Wenn das Verzeichnis bzw. der Rechnername nicht vorhanden ist geben sie ihn einfach ein. Dieses Unterverzeichnis wird dann erstellt.

Benutzer Wählen Sie einen Benutzer aus, der sich anstelle von "root" auf dem zu sichernden Rechnern einloggen darf.

rsync Argumente Eingabe von zusätzlichen Argumenten für das Programm "rsync". Diese müssen mit einem Leerzeichen getrennt sein (man 1 rsync). Standard "rsync" Argumente sind "-av --numeric-ids --delete --delete-excluded --relative".

LVM Auswahl eines Logischen Volume (LV) von dem ein temporärer Snapshot erstellt werden soll.

Script Geben Sie einen Befehl oder ein Script mit vollem Pfad ein.


2.2. Exclude Datei

Exclude Datei Hier kann man eine Datei bearbeiten, in der die Verzeichnisse und Dateien stehen die nicht mit ins Backup fliessen sollen. Sie sollten z.B. die Verzeichnisse /proc und /sys nicht mit einbeziehen, da sie nicht für die Wiederherstellung benötigt werden.


2.3. Include Datei

Include Datei Hier kann man eine Datei bearbeiten, in der die Verzeichnisse und Dateien stehen die zusätzlich mit ins Backup fliessen sollen.




3. Ansicht

Anzeige der belegten Speichergrösse von Snapshots von einem oder mehreren Rechnern. Dabei wird der Befehl "du -sch" ausgeführt.




4. Backup

Erstellt eine Momentaufnahme von den Rechnern, die in der Konfigurationsdatei eingestellt wurden und anhand der Rechnereigenen Konfiguration.




5. Beachtenswertes

5.1. NFS

Falls Benutzer ihre eigenen Backups restaurieren wollen muss man etwas Vorarbeit tätigen. Der beste Weg um dies zu erreichen ist das Erstellen eines Container Verzeichnis für den Snapshot und dieses read-only für die Benutzer ins Dateisystem einbinden. Das kann über NFS oder Samba geschehen. Hier wird der Weg über NFS auf einem einzelnen Rechner beschrieben.

Setzen Sie die Variable BACKUP_PATH in /etc/kwtools/kwrsync_backup.cf auf /.private/.snapshots.

BACKUP_PATH="/.private/.snapshots"

Erstelle das Container Verzeichnis:
mkdir -m 700 /.private
Erstelle das reale Snapshot Verzeichnis:
mkdir -m 755 /.private/.snapshots
Erstelle den read-only Snapshot Mountpunkt:
mkdir -m 755 /.snapshots
In /etc/exports füge /.private/.snapshots/ als einen read-only NFS export dazu:
/.private/.snapshots/ 127.0.0.1(ro,no_root_squash)
In /etc/fstab binde /.private/.snapshots/ read-only unter /.snapshots ein:
localhost:/.private/.snapshots/ /.snapshots/ nfs ro 0 0

Sie sollten jetzt den NFS Dämon neu starten.
Jetzt binden Sie den Snapshot root read-only ein:
mount /.snapshots
Zum testen gehe, als root, ins Verzeichnis /.snapshots. root sollte keine Schreibrechte besitzen. Versuche als root:
touch /.snapshots/testfile
Dies sollte fehlschlagen, wegen fehlender Rechte.

Jetzt können die Benutzer ins Verzeichnis /.snapshots, den Intervall aussuchen, im darunterliegenden Verzeichnisbaum surfen und Ihre alten Dateien wiederherstellen. Sie können aber keine Dateien verändern, löschen oder anlegen.

# NFSv4
Bei NFS4 sieht es ähnlich aus. Nur die Einträge in /etc/fstab und /etc/exports sehen etwas anders aus. Erstellen Sie ein Verzeichnis, zum Beispiel /srv/nfsv4.

/etc/exports:
/srv/nfsv4 127.0.0.1(rw,async,fsid=0,insecure,no_subtree_check,crossmnt)
/srv/nfsv4/.privat/.snapshots 127.0.0.1(ro,async,nohide,insecure,no_subtree_check,no_root_squash)

/etc/fstab:
/.privat/.snapshots /srv/nfsv4/.snapshots none bind 0 0
localhost:/.privat/.snapshots /.snapshots nfs4 ro 0 0


5.2. SSH

Sie sollten einen eigenen Backup User (Bsp.: kwrsyncbackup) für kwrsync_backup auf dem Backup Rechner und den zu sichernden Rechnern erstellen, damit sich der Benutzer "root" nicht dauernd einloggen muss. Diesen User (kwrsyncbackup) kann man dann mit dem Programm "sudo" das Ausführen des "rsync" Kommandos zulassen. Mit "passwd kwrsyncbackup -l" kann man dem Backup User (kwrsyncbackup) das Login auf dem Backup Rechner verbieten.
- Loggen Sie sich auf dem Backup Rechner, als "root", ein und erzeugen einen ssh Key (ssh-keygen -t dsa), ohne Passphrase. Bei Frage nach der Passphrase einfach Enter drücken.
- Auf dem Backup Rechner kopieren Sie die Datei /root/.ssh/id-dsa.pub nach /root/.ssh/authorized_keys.rsync. Dort tragen Sie das "rsync" Kommando command="sudo rsync --server --sender -vlogDtprRe.iLsfx --delete-excluded --numeric-ids . /" vor dem Key ein (command="sudo rsync ..." ssh-dss AAA....).
- Diese Datei kopieren Sie auf jeden Host der zu sichern ist, ins Home Verzeichnis des Backup Users (kwrsyncbackup) (~/.ssh/authorized_keys).

Notiz: Achten Sie darauf das, auf allen Rechnern, in der Datei /etc/ssh/sshd_config beim Parameter AuthorizedKeysFile %h/.ssh/authorized_keys steht. Desweiteren müssen zusätzliche "rsync" Argumente auch in der Datei ~/.ssh/authorized_keys stehen. Standard sind die Argumente "-av --numeric-ids --delete --delete-excluded --relative".

Sichern Sie den Backup User, durch das Programm "sudo" wie im Beispiel ab (Datei /etc/sudoers). Für die zu sichernden Rechner könnte das so aussehen:
# Host alias specification
# in diesem Fall natürlich der lokale Rechner
Host_Alias BACKUP_HOST = backuphost.domain.de
# User alias specification
User_Alias BACKUP_USER = kwrsyncbackup
# Cmnd alias specification
Cmnd_Alias KWRSYNC_BACKUP_CRON = /usr/bin/rsync
# User privilege specification
root ALL=(ALL) ALL
BACKUP_USER BACKUP_HOST=NOPASSWD: KWRSYNC_BACKUP_CRON

Der User kwrsyncbackup (BACKUP_USER) darf auf dem Rechner backuphost.domain.de (BACKUP_HOST) das Kommando (KWRSYNC_BACKUP_CRON) /usr/bin/rsync, ohne Passwort ausführen.

Notiz: Programme die auf Dateiebene sichern sollten vor dem Backup ihre Daten sichern, damit ihre Backups nicht inkonsestent sind (Bsp.: Datenbanken). Bei postresql kann man sich ein Script, mit folgendem Inhalt, schreiben:
pg_dumpall | gzip >/var/lib/postgres/fulldump.sql.gz.




6. Links

http://www.heinlein-su pport.de/web/wissen/rsync-backup/
http://www.linux-magazin.de/Artikel/ausgabe/2004/09/backups/backups.html
http://www.rsnapshot.org