HowTo: Automatisches Backup per RSYNC,CRON,EXPECT
Posted: 2005-07-06 11:35
Ziel:
Ein periodisches automatisches Backup durch rsync auf einen anderen Rootserver.
Benötigt:
rsync, expact (, cron)
Einen Login per ssh (oder scponly) auf einem anderen Host.
Installation:
Konfiguration:
Zuerst legt man sich ein Verzeichnis an (/root/backup), dann erzeugt man drei Dateien: backup.sh, includes, excludes
Die Datei "includes" füllen wir mit Verzeichnissen die wir unbedingt gesichert haben wollen, bei mir war das schlicht und einfach "/" (ich arbeite mit eher mit den excludes). In "excludes" können wir nun noch Ausnahmen festlegen, welche zwar innerhalb der zu sichernden Verzeichnisse liegen aber nicht gesichert werden sollen. Hier ein kleiner Vorgeschmack meinerseits:
Der Login auf dem anderen Host sollte funktionieren (testen!) und rsync muss installiert sein. Auf gut konfigurierten Rechnern sollte eine Authentifizierung per DSA Schlüssel möglich sein - ist dies möglich sollte es auch genutzt werden! Mehr dazu durch Google (ssh-keygen, ssh-copy-id)...
Bei mit Confixx angelegten Usern funktioniert dies nicht (man kann kein .ssh-Verzeichnis anlegen dank der Rechtebeschränkung), deshalb werden wir uns per expect authentifizieren.
Folgendes muss in die backup.sh:
Bitte die <ELEMENTE> im obigen Skript durch die eigenen Daten ersetzen. Das interact am Ende des Skripts soll die Ausgabe des Rsyncprozesses wieder auf die Konsole bringen - wenn alles funktioniert kann darauf auch verzichtet werden.
Cronjob:
In /etc/cron.d/ legen wir eine Datei (rsyncbackup) mit diesem Inhalt an:
Soweit die grobe Vorgehensweise...
Verbesserungsvorschläge? :)
Ein periodisches automatisches Backup durch rsync auf einen anderen Rootserver.
Benötigt:
rsync, expact (, cron)
Einen Login per ssh (oder scponly) auf einem anderen Host.
Installation:
Code: Select all
apt-get install rsync expactZuerst legt man sich ein Verzeichnis an (/root/backup), dann erzeugt man drei Dateien: backup.sh, includes, excludes
Code: Select all
mkdir /root/backup
cd /root/backup
touch {backup.sh,includes,excludes}Code: Select all
includes:
/
excludes:
/dev
/proc
/sys
/tmp
Bei mit Confixx angelegten Usern funktioniert dies nicht (man kann kein .ssh-Verzeichnis anlegen dank der Rechtebeschränkung), deshalb werden wir uns per expect authentifizieren.
Folgendes muss in die backup.sh:
Code: Select all
#!/usr/bin/expect -f
#
# Startet das rsync-Backup
#
# by mydani@gmx.de
# http://www.mydani.com
spawn rsync -vRae "/usr/bin/ssh -p 22 -l <USER>" --progress --stats --compress --delete --exclude-from=/root/backup/excludes --include-from=/root/backup/includes / "<USER>@<OTHERHOST.TLD>:~</PATH/TO/BACKUP>"
set rsync_spawn_id $spawn_id
expect "Password:" { send "<PASSWORD>r" }
interactCronjob:
In /etc/cron.d/ legen wir eine Datei (rsyncbackup) mit diesem Inhalt an:
Code: Select all
# Run the backup
#
#+--------------------- minute [0-59;*/10 means every 10 minutes (0,10,20,30,40,50)]
#| +----------------- hour [0-23]
#| | +--------------- day of month [1-31]
#| | | +------------- month [1-12]
#| | | | +----------- day of week [0-7; 0 or 7 is Sunday]
#| | | | | +-------- user
#| | | | | | +-- command
#| | | | | | |
15 1 * * * root /root/backup/backup.sh >> /var/log/rsync_auto.log
Verbesserungsvorschläge? :)