dir_backup_ts
Das kleine Tool besteht aus zwei Dateien: das Skript selbst (dir_backup_ts.sh) und die Konfigurationsdatei (der Name kann beliebig sein) mit den Parametern. Es können glechzeitig mehrere Konfigurationsdateien existieren - damit kann man gleichzeitig (und durch z.B. Cron automatisiert) mehrere Verzeichnisse sichern.
Wichtiger Hinweis!
Dieses Skript enthält eine prinzipielle Sicherheitslücke (die Konfigurationsdatei wird als Untershell ausgeführt) und darf deshalb nur für rein lokale Backups und zwar nur von nicht privilegierten Usern verwendet werden!
Ein Angreifer, der Schreibrechte auf die Konfigurationsdatei verschafft, kann beliebige Befehle im Kontext des aufrufenden Users einschleusen und ausführen lassen.
Ich habe es vor, dies in Zukunft so zu ändern, daß die Parameter aus der Konfigurationsdateien gelesen und nicht ausgeführt werden. Bis dahin aber bitte diesen Hinweis unbedingt beachten.
ToDo:
Die eMail um die Größe und Hostname des Backups erweitern. (Teils erledigt.)
- Die backup-Kennung wird dann im Betreff der eMail erscheinen.
- Die eMail soll volständige Angaben über das Backup enthalten: backup-Kennung, Timestamps (Anfang/Ende), Status (Erfolg/fehlgeschlagen), Größe, Filename und Speicherort (inklusive Hostname) des Backups, source-Verzeichnis des Backups.
Quelltext:
dir_backup_ts.sh: Download als GZip - das ksh-Skript (MD5 dir_backup_ts.sh.gz = 47c02f5db061cdf4270b37b608a0f733)
dir_backup_ts.cfg (Beispiel): Download als GZip - das Config-File (MD5 dir_backup_ts.cfg.gz = 8e6634e62c139d3b0843e2bfd190ca67)
Aufruf (Beispiel):
SUN:/home/developer/wa/prj/dir_backup_ts/ dir_backup_ts.sh dir_backup_ts.cfg dir_backup_ts.sh: Version 0.2 (17.11.2009), J.Kreick (noreply@kreick.de) Konfigurationsfile [dir_backup_ts.cfg] wird geladen... Folgende Angaben wurden ais dem Konfigurationsfile gelesen: Pfad zum Quell-Verzeichnis: DIR_SOURCE = [/home/developer/wa/prj/dir_backup_ts/source-dir] Pfad zum Ziel-Verzeichnis: DIR_BACKUP = [/home/developer/wa/prj/dir_backup_ts/target-dir] Base-Name des Backup-Files: BACKUP_BASE_NAME = [ein-test-backup] Minimale Anzahl von Backups: BACKUP_FILES_COUNT_MIN = [3] Minimale Aufbewahrungszeit in Tagen: BCKP_FILES_AGE_MIN = [3] Status-eMail an: EMAIL_TO = [adresse@domain.tld] 2009-11-17 11-26-20: Inhalt des Verzeichnises [/home/developer/wa/prj/dir_backup_ts/source-dir] wird unter dem Namen [ein-test-backup.2009-11-17_11-26-20.tar.gz] im Verzeichnis [/home/developer/wa/prj/dir_backup_ts/target-dir] gesichert... a /home/developer/wa/prj/dir_backup_ts/source-dir/ 0K a /home/developer/wa/prj/dir_backup_ts/source-dir/file1.txt 1K a /home/developer/wa/prj/dir_backup_ts/source-dir/file2.txt 1K 2009-11-17 11-26-20: Backup [/home/developer/wa/prj/dir_backup_ts/target-dir/ein-test-backup.2009-11-17_11-26-20.tar.gz] wurde erfolgreich angelegt. 2009-11-17 11-26-20: Veraltete Backups im Verzeichnis [/home/developer/wa/prj/dir_backup_ts/target-dir] werden entfernt... 2009-11-17 11-26-20: Das Verzeichnis [/home/developer/wa/prj/dir_backup_ts/target-dir] wurde erfolgreich aufgeraeumt. Die eMail wird an [adresse@domain.tld] gesendet... done SUN:/home/developer/wa/prj/dir_backup_ts/
Nach dem das Skript fertig ist, kommt folgende eMail:
Von: developer@developerhost An: adresse@domain.tld Betreff: dir_backup_ts.sh: Status of [Test_Backup]: SUCCESS [Test_Backup]: SUCCESS Begin: 2009-11-17 11-26-20 Ende: 2009-11-17 11-26-20 SourceDir: [/home/developer/wa/prj/dir_backup_ts/source-dir] TargetDir: [/home/developer/wa/prj/dir_backup_ts/target-dir] TargetFile: [ein-test-backup.2009-11-17_11-26-20.tar.gz] Message: Backup [/home/developer/wa/prj/dir_backup_ts/target-dir/ein-test-backup.2009-11-17_11-26-20.tar.gz] wurde erfolgreich angelegt. EOF
Viel Spaß!
Stand: 17.11.2009 - In Arbeit
— : Jürgen Kreick
EOF