HowTo: Automatisches Backup per RSYNC,CRON,EXPECT

Backup, Restore und Transfer von Daten
Post Reply
mydani
Posts: 152
Joined: 2003-08-18 19:34
 

HowTo: Automatisches Backup per RSYNC,CRON,EXPECT

Post by mydani »

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:

Code: Select all

apt-get install rsync expact
Konfiguration:
Zuerst 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}
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:

Code: Select all

includes:
/

excludes:
/dev
/proc
/sys
/tmp
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:

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" }
interact
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:

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
Soweit die grobe Vorgehensweise...
Verbesserungsvorschläge? :)
Last edited by mydani on 2005-07-06 12:41, edited 1 time in total.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: HowTo: Automatisches Backup per RSYNC,CRON,EXPACT

Post by Roger Wilco »

mydani wrote:[Verbesserungsvorschläge? :)
Es heißt expect, nicht expact...
mydani
Posts: 152
Joined: 2003-08-18 19:34
 

Re: HowTo: Automatisches Backup per RSYNC,CRON,EXPECT

Post by mydani »

:oops:
banshee
Posts: 11
Joined: 2005-06-16 20:19
 

Re: HowTo: Automatisches Backup per RSYNC,CRON,EXPECT

Post by banshee »

Code: Select all

~/backup # ./backup.sh
spawn rsync -vRae /usr/bin/ssh -p 22 -l **** --progress --stats --compress --delete --exclude-from=/root/backup/excludes --include-from=/root/backup/includes / 
user@host:~</backups>
Password:
bash: -c: line 1: syntax error near unexpected token `newline'
bash: -c: line 1: `rsync --server -vlogDtprRz --delete . ~</backups>'
rsync: connection unexpectedly closed (0 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(342)
:~/backup #        
Usernamen und Host habe ich natürlich rauseditiert.

Wo steckt da der Henker?

Der Henker steckte im Detail und einem Tipperteufel. Hat sich somit erledigt.

Ich danke dir für dein kleines Script. Das hat mir die Arbeit abgenommen, mich selbst einzulesen.


Thx.

Prädikat Empfehlenswert. ;)
der dude
Posts: 114
Joined: 2005-03-04 18:46
 

Re: HowTo: Automatisches Backup per RSYNC,CRON,EXPECT

Post by der dude »

banshee wrote:

Code: Select all

~/backup # ./backup.sh
spawn rsync -vRae /usr/bin/ssh -p 22 -l **** --progress --stats --compress --delete --exclude-from=/root/backup/excludes --include-from=/root/backup/includes / 
user@host:~</backups>
Password:
bash: -c: line 1: syntax error near unexpected token `newline'
bash: -c: line 1: `rsync --server -vlogDtprRz --delete . ~</backups>'
rsync: connection unexpectedly closed (0 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(342)
:~/backup #        
Usernamen und Host habe ich natürlich rauseditiert.

Wo steckt da der Henker?

Der Henker steckte im Detail und einem Tipperteufel. Hat sich somit erledigt.

Ich danke dir für dein kleines Script. Das hat mir die Arbeit abgenommen, mich selbst einzulesen.


Thx.

Prädikat Empfehlenswert. ;)
Ich habe genau den gleichen Fehler. Was war denn das Problem?

Gruß
Post Reply