« July 2008 | Main | February 2009 »

November 2008 Archives

November 23, 2008

sophisticated Backups mit Rsync

Backups sind wichtig.
Jeder der einmal vor einer kaputten, ratternden Festplatte gesessen hat, weiß wie frustrierend das Wissen ist, alle seine Daten ins informationstechnische Nirwana entschwinden zu sehen.
Ist ein Backup der persönlichen Daten noch mit relativ geringem Aufwand möglich (so es denn regelmäßig veranstaltet wird), so wird ein Backup eines Server-Systems in vielen Dingen anspruchsvoller.

Dies fängt damit an, dass reinen Datenmengen oftmals das Vielfache eines Ein-Benutzer-Systems betragen. Okay in heutige Zeit, wo ein jeder zig GBs an Musik und Videos auf dem Rechner hat, muss man das natürlich relativieren.

In diesem Beitrag möchte ich ein Bash-Script vorstellen, welches folgende Dinge leistet:


  1. Sichern von N-Hosts über RSYNC

  2. Sichern von N-Verzeichnissen auf jedem Host
  3. Inkrementelles Sichern (es werden nur Unterschiede gesichert/übertragen)
  4. Zusammenführen von täglichen (inkrementellen) Backups zu wöchentlichen Vollbackups.
  5. die aktuellen Backups sind jeweils unter einem Hardlink "latest" erreichbar.

Nachfolgend erfolgt eine Beschreibung über den Ablauf des Scriptes.
Es wird Momentan durch eine Sicherung von 3 Serversystemen und ca. 20 GB an reinen Nutzdaten getestet.
 
  1. Stelle sicher, dass alle notwendigen Verzeichnisse vorhanden sind: 
    1. Verzeichnis "log" für log-Dateien der Sicherungen 
    2. Verzeichnis "backup" für die eigentlichen Sicherungen
       1. Je Backupquelle ein Verzeichnis
       2. Innerhalb jedes Quellverzeichnisses ein Verzeichnis für tägliche und eines für wöchentliche Sicherungen
  2. Stelle sicher, dass alle Config-Dateien vorhanden sind:
    1. sources.txt mit den Namen der zu sichernden Hosts/Verzeichnisse
    2. exclude.txt mit den Dateien, welche nicht gesichert werden sollten (z.B. Thumbs.db)
    3. innerhalb jedes Quellverzeichnisses eine Datei namens src-root.txt (mit dem ROOT der Sicherung)
        und src-folders.txt (mit den einzelnen Verzeichnissen)

Der Aufbau des Root-Verzeichnisses sieht nun wie folgt aus.     
  ROOT
      |
      |-log
      |-sources.txt
      |-exclude.txt
      |-backup
            |-host1.de
            |-host2.de
                  |-src-root.txt
                  |-src-folders.txt
                  |-daily
                  |-weekly

Ein Beispiel für eine sources.txt sieht wie folgt aus:

  host1.de
  host2.de

Ein Beispiel für eine exclude.txt sieht wie folgt aus:

  Thumbs.db
  .DS_Store

Eine src-root.txt könnte so aussehen:

  [email protected]:

Eine src-folders.txt könnte so aussehen:

  /home
  /etc
  /var/log
  /var/www


Ablauf der Sicherung:
Generiere Log-Datei.
Iteriere über alle Quellen aus sources.txt
Überprüfe ob alle Quellen Verzeichnisse zum Sichern enthalten.
Überprüfe ob lokal Verzeichnisse für die Sicherung existieren - wenn nicht lege sie an.
Erstelle tägliches Backup:
  Existiert ein vorheriges Backup, so sichere nur die Änderungen.
  Dies passiert mit folgendem Befehl:
 
    rsync -zrva --exclude-from=exclude.txt --link-dest=<hardlink-zu-altem-backup>  <sourcefolder>/ <backupfolder>/daily/<tag>/<zu-sicherndes-Verzeichnis>

  Hierbei werden alle Benutzerrechte mitgesichert.

  Setzte Hardlink vom letztem täglichen Backup auf aktuelles tägliches Backup.

  Überprüfe ob Sonntag ist ( date +%w = 0)
  Wenn ja, synchronisiere letztes tägliches Backup mit wöchentlichem (neuen) Backup.

  Setzte Hardlink vom letztem wöchentlichen Backup auf aktuelles wöchentliches Backup.
  Lösche alle täglichen Backups.
  Setzte Hardlink vom letztem täglichen Backup auf aktuelles wöchentliches Backup.

So werden maximal 7 incrementelle tägliche Backups erstellt und pro Jahr 52 wöchentliche.

Das Backup-Script ist im Anhang zu finden :-).

Download file


Blogged with the Flock Browser

About November 2008

This page contains all entries posted to Philipps paper equivalent Blog in November 2008. They are listed from oldest to newest.

July 2008 is the previous archive.

February 2009 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31