David's Interblag "use strict;"

28Jan/110

Shell-Script für tägliche Backups

Wer keine großen Anforderungen an eine komplexe Backuplösung unter Linux stellt, dem könnte mit dem folgenden Script geholfen werden.
Die grundsätzliche Idee ist ein einfaches Crontab, welches ein Snapshot diverser Dateien und Pfade erstellt. Diese sollen anschließend komprimiert und auf einem FTP Server abgelegt werden. Für die Durchführung wird daher rsnapshot und ftp benötigt. Sofern noch nicht vorhanden:

aptitude install rsnapshot ftp
(apt-get analog; bzw. abh. d. jew. Distrib.)

In der /etc/rsnapshot.conf können nun die zu sichernden Objekte festgelegt werden:

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

# LOCALHOST
#backup /home/ localhost/

backup /var/lib/mailman/ localhost/
backup /var/www/ localhost/
backup /etc/mailman/ localhost/
backup /etc/exim4/ localhost/
backup /etc/rsnapshot.conf localhost/

Die Änderungen speichern und (z.B.) im root-Verzeichnis eine backup.sh anlegen und ausführbar machen:

touch backup.sh
chmod +x backup.sh

Mit vi oder nano die backup.sh öffnen und folgenden Inhalt einfügen:

#!/bin/sh
#Snapshot erstellen:
echo Erstelle Snapshot...
rsnapshot daily

#Vorlage des Dateinamens:
FILE=`hostname`_`date +%s`.tar.bz2

#Archiv anlegen und Originaldaten löschen:
echo Erstelle Archiv...
tar -vczf $FILE /.snapshots/daily.0/
echo Lösche Backup...
rm -rf /.snapshots/daily.0/

#FTP Credentials eintragen:
HOST='HOSTNAME' # beliebigerhost.de
USER='BENUTZERNAME'
PASSWD='PASSWORT'

#Verbindung zum FTP Server aufbauen:
echo Öffne Verbindung...
ftp -n $HOST <

Erklärung:
1. rsnapshot wird mit dem Befehl "daily" ausgeführt.
2. Der Dateiname wird festgelegt und setzt sich zusammen aus dem Hostname und dem Datum, z.B.: beliebigerhost.de_1296207907.tar.bz2
3. Der zuvor erstellte Snapshot "daily" wird als tar und gzip gepackt.
4. Das Snapshot "daily" wird dann gelöscht.
5. Die FTP-Credentials werden angegeben.
6. Eine FTP Verbindung wird aufgbaut und die Datei wird mit "put" auf den Server gepusht.
7. Ist der Upload erfolgreich, wird geprüft ob die Datei auch auf dem FTP Server liegt.
8. Ist der Test aus 7. erfolgreich erscheint eine Meldung dass der Upload erfolgreich/nicht erfolgreich war.
9. Anschließend wird das tar.bz2-Archiv gelöscht.

Um das Script jede Nacht um 0 Uhr ausführen zu lassen, mit vi oder nano die /etc/crontab öffnen und um folgenden Eintrag ergänzen:

0 0 * * * root /root/backup.sh

Und noch gegebenenfalls den cron daemon neustarten:

/etc/init.d/cron restart

Sollte wie in meinem Fall der cron Dienst den root User per Mail über die crons informieren, stehen dann in der Mail z.B.:

Erstelle Snapshot...
Erstelle Archiv...
tar: Removing leading `/' from member names
/.snapshots/daily.0/
[...]
/.snapshots/daily.0/localhost/etc/mailman/leftover
Lösche Backup...
Öffne Verbindung...
FTP of beliebigerhost.de_1296217982.tar.bz2 to beliebigerZielhost.de worked

Fertig.

veröffentlicht unter: Linux Kommentar schreiben
Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

CAPTCHA-Bild

*

Noch keine Trackbacks.