Backup per rsync

So jetzt auch noch mein Backupverfahren.

Cron startet auf jedem Server zu den festgelegten Zeiten den Backupjob. Dieser besteht aus 2 Shellscripten und ein paar Konfigurationsdateien.

  1. /etc/cvbackup/basic.conf = Benutzernamen, Passwörter, welche ssh-keys genommen werden sollen usw.
  2. /etc/cvbackup/folder.conf = legt die zu sichernden Ordner fest
  3. /etc/cvbackup/folder_excludes.conf = Alle Ordner, die nicht gesichert werden sollen. relativ vom jeweiligen Startverzeichnis. Angegeben in rsync Manier.
  4. mysql_database.conf = enthält alle zu sichernden Datenbanknamen auf diesem Server.

Die Scripte:

  1. /root/backup/backup.sh = Das eigentliche Backupscript
  2. /root/backup/backup_sql.sh = Backupscript für die Mysql Datenbanken
  3. /root/backup/rotate.sh = wird auf dem Targetserver über die rc.local beim Boot gestartet und prüft alle 10 Minuten ob ein Backup beendet wurde und es dann rotiert werden muss.

Das Verfahren:

Die Backupscripte legen die Daten mit dem angegebenen User unterhalb von /srv/backup/HOSTNAME/current ab. Nach Ende aller Kopiervorgänge wird im Verzeichnis /srv/backup/HOSTNAME die Datei finished abgelegt. rotate.sh prüft alle 10 Minuten alle Unterverzeichnisse von /srv/backup auf dateien mit dem Namen finished. Ist diese vorhanden, so wird per „cp -al“ das Verzeichnis per Hardlinks kopiert in die folgende Struktur:

+– 2010
|   +– 01
|   +– 02
|   +– 03
|   +– 04
|       +– 2010_04_01__T__21_55
|       +– 2010_04_02__T__21_55
|       +– 2010_04_03__T__21_56
|       +– 2010_04_04__T__21_57
|       +– 2010_04_05__T__21_57
|       +– 2010_04_06__T__21_58
|       +– 2010_04_08__T__00_49
|       +– 2010_04_08__T__22_09
|       +– 2010_04_09__T__21_42
+– current

Die Inhalt der verzeichnisse 2010_04_09__T__21_42 und current sind nach Abschluss des Kopiervorganges identisch. Bei einem erneuten Rsync werden bei den veränderten Dateien die Hardlinks aufgebrochen und die Datei in current überschrieben.

Somit sind die Daten mit minimalen Platzbedarf gesichert und ich kann zusätzlich auf jeden einzelnen Backupstand wie auf ein Vollbackup zugreifen.

[Backup Scripte]

To-Do:

  1. Überwachung in Nagios/Opsview einbauen
  2. Backupstände automatisch verwerfen (Nach einem Jahr nur noch Monatsstände vorhalten, nach zwei Jahren nurnoch halbjahresstände usw.)
Dieser Beitrag wurde unter Linux veröffentlicht. Setze ein Lesezeichen auf den Permalink.