Backup von Linuxserver mit rsync
8. April 2009 at 22:37 Filed in:teodata View Comments
Hier erkläre ich euch wie man ein automatisiertes Backup mit rsync über einen SSH Tunnel mit Key-Autologin zwischen zwei Linux / Mac Systemen erstellt.
Jeder muss selbst wissen was er an seinem Server / Router / Mac macht. Daher distanziere ich mich von allen Schäden die durch diese Anleitung entstehen könnten!
Ich nenne den zu Sichernden Server: “Produktiv-Server”
Ich nenne den Backupserver: “Backup-Server”
Die Voraussetzungen:
Auf beiden Servern muss rsync installiert sein.
apt-get install rsync
Nur für den “Backup-Server”:
Einen neuen Backupuser auf dem Backup-Server anlegen. Ich nenne den User “Produktivbackup”
useradd -m -p PASSWORT Produktivbackup
Als Passwort solltet Ihr ein sicheres wählen.
(nicht “backupuser1234″)
Dann dem User per sudo das Ausführen von rsync mit Root-Rechten erlauben.
Installation von sudo:
apt-get install sudo
Nun sudo beibringen, das der Benutzer “Produktivbackup” rsync mit Root-Rechten ausgeführen darf.
visudo
und folgdes einfügen
Produktivbackup ALL=(root)NOPASSWD:/usr/bin/rsync
Vorbereitung des Backup_servers für die Public-Key-Dateien vom “Produktiv-Server”
mkdir /home/Produktivbackup/.ssh
chown Produktivbackup:Produktivbackup /home/Produktivbackup/.ssh
So jetzt wechseln wir auf den “Produktiv-Server”
Die “Keys” zum automatischen Authentifizieren zwischen den beiden Servern erzeugen.
Bei der Abfrage “passphrase” einfach Enter drücken, denn sonst klappt der Autologin nicht.
mkdir /root/keys
ssh-keygen -t dsa -b 1024 -f /root/keys/rsync-key
Kopieren der rsync-key.pub zum “Backup-Server”
Kleine Anmerkung: Da hier per SCP Kopiert wird müsst Ihr euren SSH Port auf dem Backupserver kennen, die Angabe hinter dem “-P” ist der SSH-Port! Als Beispiel nehme ich den Standartport 22.
cd /root/keys
scp -P 22 rsync-key.pub Produktivbackup@IP-ODER-DNS-DES-BACKUPSERVERS:/home/Produktivbackup/.ssh
Wenn ihr Euch das erste mal zum Backupserver verbindet dann bitte die Abfrage mit “yes” Bestätigen.
Danach werdet Ihr nun nach dem Passwort des Benutzers “Produktivbackup” was Ihr eben vergebe habt gefragt.
Nach der Eingabe des Passwortes wird nun der “rsync-key.pub” in das Verzeichnis /home/Produktivbackup/.ssh kopiert.
Nun müssen wir noch einmal zurück zu unserem “Backup-Server”
Folgendes eingeben:
mv /home/Produktivbackup/.ssh/rsync-key.pub /home/Produktivbackup/.ssh/authorized_keys
chown -R Produktivbackup:Produktivbackup /home/Produktivbackup/.ssh
chmod 700 /home/Produktivbackup/.ssh
chmod 600 /home/Produktivbackup/.ssh/authorized_keys
Hier wird die rsync-key.pub in authrized_keys umbenennt und die Rechte angepasst, das nur der Backupbanutzer auf die Datei zugreifen darf.
Nun sollte eine Testverbindung vom “Produktiv” zum “Backup” nichts mehr im Wege stehen.
ssh -p 22 -i /root/keys/rsync-key Produktivbackup@IP-ODER-DNS-DES-BACKUPSERVERS
Wenn alles gut läuft seid Ihr nun ohne Passwortabfrage auf der Shell vom “Backup-Server”. Mit “exit” verlasst ihr die Shell des “Backup-Servers” wieder.
Nun kommt mein Backupscript was ich z.Z. nutze.
Dies könnt Ihr in ein Verzeichnis eurer Wahl legen z.B. /root/scripte/
mkdir /root/scripte
nano backupscript.sh
und fügt folgendes ein:
#!/bin/shBACKUPDIR=/ #Ab hier wird gesynct
FILEEXCLUDE=/root/scripte/rsync_exclude.txt #exclude Datei
SSHRSYNCKEY=/root/keys/rsync-key #Keyfile für den Autologin
TARGETDIR=/home/Produktivbackup/ #oder ein anderes Verzeichnis was existieren muss
BACKUPSERVER=IP oder DNS Name #Adresse Backup-Server
USER=Produktivbackup #Benutzer Backupserver
SSHPORT=22 #oder EUER SSH-PORT vom “Backup-Server”
OPTIONS=-avzeecho “Starte Rsync nach $BACKUPSERVER an Port $SSHPORT in das\
Zielverzechnis $TARGETDIR die aktuellen Rsync Optionen $OPTIONS”rsync $OPTIONS “ssh -p $SSHPORT -i $SSHRSYNCKEY” –rsync-path=’sudo /usr/bin/rsync’\
–stats -–numeric-ids –exclude-from=$FILEEXCLUDE $BACKUPDIR $USER@$BACKUPSERVER:$TARGETDIRecho “…ready”
Eine Datei fehlt noch bevor Ihr loslegen könnt, das ist die “rsync_exclude.txt” die bei mir auch unter /root/scripte/ liegt.
Datei anlegen:
nano /root/scripte/rsync_exclude.txt
Als Beispiel könnt ihr meinen Inhalt der Datei einfügen:
- /lib
- /bin
- /opt
- /sys
- /proc
- /tmp
- /lost+found
- /dev
- /media
- /cdrom
Nun noch das Script in die in die “crontab” einfügen.
In der Shell:
crontab -e
und folgendes für eine tägliche Syncronisation nachts um 0:02 Uhr eingeben:
2 0 * * * sh /root/scripte/backupscript.sh
Fertig, nun wird jede Nacht ein Backup / Syncronisation gestartet.

