Make snapshotLC

Aus Linupedia.org
Wechseln zu: Navigation, Suche
make_snapshotLC
{{{Screenshot}}}
Basisdaten
Entwickler: Idee: Mike Rubel, Erweiterungen: Pfalzwolf
Aktuelle Version: 0.3
letzte Veröffentlichung: 20.06.2007
Betriebssystem: Linux
Kategorie: Backup
Lizenz: GPL
Deutschsprachig: Nachrichten english, Handbuch deutsch
Webseite: Make_snapshotLC_sh

Datensicherung auf Basis von rsync

Anlegen von Datensicherungs-Generationen

Zielanwender

Das hier vorliegende Backup-Skript ist für Privatanwender und kleinere Unternehmen geeignet. Mit geringen Änderungen ist ein Backup eines oder mehrerer Server über SSH möglich. Es gibt sicher bessere und umfassendere Lösungen. Dieses Skript ist aber einfach, gut zu handhaben und von seinen Leistungen her mehr als ausreichend für die Ziel­gruppe.

Was braucht der Privatanwender

Bevor der einzelne Anwender aber in die Auswahl eines Backup Tools einsteigt, sollte er sich über seine Be­dürfnisse im Klaren sein. Der Verfasser schildert seine reine Privatanwender Sicht.

  • Alle Anwender-Daten wie OO Dokumente, Musikstücke, Filme etc. sollen sicher verwahrt werden.
  • Die Sicherungen sollen im Generationen-Prinzip gemacht werden
  • Dokumente, die ewig nicht gebraucht wurden und die man vielleicht aus Platzgründen gelöscht hat, sollen für den Fall eines Falles aus einem Langzeitarchiv wieder geholt werden können.
  • Alle wichtigen Konfigurationen sollen gesichert werden, dass im Worst Case nach einer Neuinstallation des Systems alles wieder herstellbar ist.
  • Im Home Verzeichnis ist ja meist viel Bewegung. Es gibt Testversionen oder Spiele usw. die man nicht in voller Pracht und Schönheit auf ewig sichern möchte. Die sollten daher von einer Sicherung igno­riert werden(siehe exclude).
  • ...

Was bietet das beschriebene Tool - Übersicht

Die Sicherung basiert auf dem extrem variablen und mit vielen Funktionen ausgestatteten Programm rsync. Es gibt für die Sicherung ein Script, das in bestimmten Abständen per cronjob gestartet wird. Starten von Hand ist genau so möglich.

Gemäß dem Generationen-Prinzip gibt es ein Set von Tagessicherungen, Wochensicherungen und Monatssi­cherungen. Welche Art der Sicherung vorgenommen wird, bestimmt ein Parameter.

Wie oft ein Sicherungslauf gestartet wird und wie viele der umlaufenden Sicherungen man einrichtet, ist im höchsten Maße individuell. Das Sicherungsprogramm braucht nur entsprechend konfiguriert werden.

Der Verfasser hat die Skripte aus der ersten Quelle für seine Bedürfnisse angepasst. Der Originalbeitrag beschreibt nicht nur das Verfahren sondern bringt dem Anwender rsync gut verständlich näher.

Änderungen und Ergänzungen

Basierend auf dem Original wurden folgende Veränderungen vorgenommen:

  • Weitere Sicherungs-Ebene Monatssicherungen eingeführt
  • Durch die Änderung der Werte von DAYS, WEEKS und MONTHS im Script kann jeder Anwender die Anzahl seiner Backups einstellen.
  • Die Prüfung der Platzverhältnisse.
  • Zusammenfassung zu einem Skript mit Optionen zur Steuerung

In einer recht ähnlichen Variante ist die Sicherung hier zu finden: Heinlein Professional Linux Support GmbH

Es werden hier in dieser Dokumentation hauptsächlich die Details zur Anwendung im Tagesgeschäft beschrieben, da die technische Beschreibung(englisch) auf der Webseite von Mike Rubel sehr ausführlich ist.

Aufruf Backup Skript make_snapshotLC.sh

Tages-Sicherung

make_snapshotLC.sh -d

Das Script mit Option -d aufgerufen erstellt eine Sicherung die man pro Tag einmal oder auch mehrfach durch­führen kann. Die Sicherungen werden zyklisch erstellt. Das heißt, es wird immer die älteste gelöscht und eine neue dazu gestellt. Wenn man 8 Sicherungen eingestellt hat(DAYS = 7), geht das so: Zuerst wird Sicherung 7 gelöscht. Dann wird Sicherung 6 auf 7 geschoben, Sicherung 5 wird auf 6 geschoben usw. zum Schluss wird Sicherung daily.0 neu erstellt.

Die letzte Sicherung befindet sich immer im Verzeichnis daily.0

Hinweis: Da man sehr viele Tagessicherungen machen kann - manche machen im Abstand von Stunden einen Lauf - werden nicht alle Sicherungen lückenlos in die Ebene Wochensicherung geschoben. Bei einer Wochensicherung wird die älteste vorhandene Tagessicherung genommen.

Wochen-Sicherung

make_snapshotLC.sh -w

Das Script nimmt bei dem Aufruf mit Option -w die gerade älteste Tages-Sicherung(z.B. daily.7) und wandelt sie in die neueste Wochen-Sicherung weekly.0 . Zuvor werden die vorhandenen Wochensicherungen eine Nummer höher geschoben(weekly.0 -> weekly.1 usw.)Die älteste Wochensicherung(z.B. weekly.4) wird ge­löscht. Eine Wochensicherung stellt daher im ursprünglichen Sinn keine separate Sicherung dar! Es wird lediglich die älteste Tagessicherung auf die Ebene Wochensicherung verschoben. Eine Wochensicherung wird nur ge­macht, wenn die maximale Anzahl Tagessicherungen vorhanden ist.

Monats-Sicherung

make_snapshotLC.sh -m

Die vorhandenen Monatssicherungen werden zunächst eine Nummer höher geschoben(monthly.0 -> monthly.1 usw.) Das Script nimmt dann die älteste Wochen-Sicherung und speichert sie als neue Monats-Sicherung(wee­kly.0). Die älteste Monatssicherung wird dabei gelöscht. Eine Monatssicherung wird nur gemacht, wenn die maximale Anzahl Wochensicherungen vorhanden ist.

Die Sicherungen werden über die crontab automatisch gestartet. Siehe Beispiel unten. Jeden Tag um 13:00 Uhr läuft die Tagessicherung. Jeden Sonntag um 13:30 läuft die Wochensicherung und an jedem 1. Tag im Mo­nat die Monatssicherung - siehe Beispiel für crontab Einstellung.

Eine Sicherung kann von Hand gemacht werden. Wenn der Computer nämlich zu dem vorgesehenen Zeit­punkt nicht läuft, wird auch keine Sicherung gemacht. Davon ist besonders die Monatssicherung betroffen. Die kann bei Bedarf nachgeholt werden. Es gilt also, ein waches Auge auf die Sicherungen zu haben. Man kann zwar zu jedem beliebigen Zeitpunkt eine Sicherung von Hand anstoßen, sollte aber wissen, dass 2 dicht aufeinander folgende Aufrufe nur die selbe Sicherung ein weiteres mal erstellen und dabei die älteste Si­cherung der betroffenen Ebene(z.B. Tagessicherung) nach /dev/null wandert. Das wäre nicht sehr sinnvoll.

Anzeige kurzer Hilfetext zum Aufruf

make_snapshotLC.sh -h

Restore

Muss man auf Sicherungsdaten zurück greifen, sucht man sich das passende Backup, welches das richtige Element(Datei oder Verzeichnis) enthält und kopiert es einfach wieder an die Original Stelle zurück. Natürlich muss auch eine gesicherte Version vorliegen, die nicht vorher per Exclude ausgeschlossen wurde...

Speicherort und Warnung

Die Sicherungen sollen auf keinen Fall auf die selbe Platte, auf der die Originaldaten liegen, gemacht werden!

Die Sicherungen sollen auch keinesfalls in ein Windows-Dateisystem wie FAT oder NTFS gemacht werden, da sonst wichtige Attribute fehlen.

Wer seine Mails sichert, kann davon ausgehen, dass dies wegen häufiger Änderungen durch neue Mails einen sehr großen Platzbedarf auslöst! Der Verfasser sichert seine Mails(nicht in dieses Skript eingebaut) immer wieder in das gleiche Verzeichnis ohne Generationen anzulegen. Für ein Geschäftsumfeld ist das wahrschein­lich zu wenig, es sei denn, alte Mails werden nie gelöscht.

Speicherplatz

Durch geschickte Verlinkung der Linux Daten wird trotz der vielen Sicherungen sehr wenig Speicherplatz benötigt. Nur wenn sich Dateien ändern oder neue hinzukommen, wird zusätzlich Platz verbraucht. Man muss etwa mit dem doppelten Speicherplatz der Originaldaten(z.B. /home) rechnen, wenn man 10 Backups vorsieht. Das ist aber eine sehr grobe Angabe!

Dateien, die nicht gesichert werden

In der Datei backup_exclude werden alle Verzeichnisse und Dateien aufgelistet, die nicht gesichert werden sollen. Wo die Datei liegt, bestimmt der Anwender und schreibt den Ort in die Konstante EXCLUDE in der Cu­stomizing Section des Skriptes.

Log Datei

Mit der Einrichtung der cron Jobeinträge kann auch eine Log Datei angegeben werden, die entweder immer wieder überschrieben oder fortgeschrieben wird. (> oder >>) siehe Beispiel unten.

Technische Angaben zum Backup-Script make_snapshot.sh

Sicherungszeiten

Die Sicherungen werden in der crontab eingestellt im privilegierten Modus(su) eingestellt Aufruf: crontab -e Man sollte dazu die Kommandos des Linux-Editors vi kennen! Alternativ dazu kann das grafische Frontend kcron zur Verwaltung der cron-Jobs verwendet werden.

Beispiel

30 13 * * * /usr/local/bin/make_snapshotLC.sh -d >/dev/null 2>&1
35 13 * * 7 /usr/local/bin/make_snapshotLC.sh -w >/dev/null 2>&1
50 13 1 * * /usr/local/bin/make_snapshotLC.sh -m >/dev/null 2>&1
oder
30 13 * * * /usr/local/bin/make_snapshotLC.sh -d >/home/wolf/TMP/backuplog 2>&1
usw.

Erläuterung

Script make_snapshotLC.sh -d wird jeden Tag zur Tagessicherung um 13:30 aufgerufen

Script make_snapshotLC.sh -w wird jeden Sonntag zur Wochensicherung um 13:35 aufgerufen.

Script make_snapshotLC.sh -m wird jeden ersten Tag im Monat zur Monatssicherung um 13:50 aufgerufen.

Die Unterdrückung der Ausgabe außer bei schweren Fehlern(2>&1) soll man erst in crontab eintragen, wenn alles läuft.

Installation und Konfiguration

Das Datensicherungs-Skrip make_snapshotLC.sh wird in das Verzeichnis /usr/local/bin gespeichert

Die folgenden Konstanten können in der Customizing Section des Backup Skripts nach den speziellen Bedürf­nissen des Anwenders angepasst werden:

MOUNT_DEVICE	Device auf das die Datensicherung kommt z.B. /dev/sda2
MOUNT_RO        Die Backups im normalen Betrieb read only machen: true, sonst false
SNAPSHOT_RW	Verzeichnis der Sicherungen z.B. /DASI/snapshot  Verzeichnis musst Du selbst anlegen. ALLES kommt unter snapshot(daily.0, daily.1 usw.)
EXCLUDE	        Verzeichnis, in dem Dateien oder Verzeichnisse benannt sind, welche NICHT gesi­chert werden sollen z.B. /home/wolf/nobackup/backup_exclude Das musst Du selbst anlegen.
CHECK_HDMINFREE Prüfen ob genug Speicherplatz vorhanden ist. Werte true | false
HDMINFREE       gibt den maximal belegten Platz auf dem Sicherungsmedium in % an, bis zu dem ein Backup durchgeführt wird.
DAYS	        Anzahl der Tages-Sicherungen 	z.B. 6 ergibt 7Sicherungen, da ab 0 gezählt wird
WEEKS		Anzahl der Wochen-Sicherungen	z.B. 3 ...
MONTHS		Anzahl der Monats-Sicherungen	z.B. 5 ...

Backups Read-Only

In dem Script ist ein Mechanismus, um die Sicherungsdaten auf read-only zu setzen. Wer will, kann das wieder aktivieren. Dazu setzt man in der Customizing Section den Wert MOUNT_RO=true.

Tipps

Bei normalem Betrieb werden die Sicherungsverzeichnisse automatisch angelegt, sofern die Backup-Läufe wie vorgesehen in der Reihenfolge daily, weekly und monthly aufgerufen werden.

Wer sich selbst für die eigenen Bedürfnisse etwas zurechtschneidern möchte, erhält aus Quelle 1. in den Ab­schnitten ”Contributed Code” und ”References” viele sehr gute Anregungen. Dort findet man auch die einfachen Erweiterungen für Sicherungen in Server- und Netzwerk-Umgebungen über SSH .

Sicherung von Windows Daten

Einige Anwender haben zusätzlich zu Linux noch Windows. Das oben beschriebene Konzept lässt sich auch in begrenztem Umfang für Windows nutzen. Windows Daten können mit kleinen Anpassungen des Skripts gesi­chert werden - auch über Samba.

Wer seine Daten unter Windows sinnvoll angelegt hat, wird es leicht haben. Der Verfasser hat alle seine Windows-Daten unter der Sammel-Directory \Data angelegt. Da gibt es Directories wie \Word, \Excel, \PDF \Fotos usw. darunter. Man braucht nur \Data zu sichern.

Wer das nicht hat, muss halt mit Include und Exclude Dateien hantieren. Diese Dinger sind zwar leicht aufzu­bauen aber mit der Pflege sieht es meist nicht so gut aus. Schnell hat man vergessen, etwas in die Exclude Liste zu schreiben und schon ballert das Programm im ungünstigen Fall das Datensicherungsmedium voll.

Beispiel der Directory-Struktur

Sicherungen entsprechend den Parametern oben für DAYS, WEEKS, MONTHS:

DASI
   snapshot
      home
         daily.0
         daily.1
         daily.2
         daily.3
         daily.4
         daily.5
         daily.6
         weekly.0
         weekly.1
         weekly.2
         weekly.3
         monthly.0
         monthly.1
         monthly.2
         monthly.3
         monthly.4
         monthly.5

Download des Scripts make_snapshotLC.sh

Das Script kann hier kopiert werden.

Anmerkung von framp: Es liegt eine eMail des Autors des Originalskripts vor, in der er sein Einverständnis zur Publikation seines geänderten Scripts im LC Wiki gibt.

Weitere Information

  1. Easy Automated Snapshot-Style Backups with Rsync Original Skript von Mike Rubel Bei dieser Quelle sind in der Beschreibung eine große Anzahl von ähnlichen Lösungen oder Ver­besserungen genannt. Für Interessierte eine Fundgrube.
  2. Howto: Backups und Snapshots von Linux-Servern mit rsync und ssh Ähnliches Skript von Heinlein Professional Linux Support GmbH
  3. man rsync


Danke an framp für die geduldige Unterstützung


zurück zum Backup
Zurück zur Hauptseite