10.5.2016 Linux Backup

Allein die Vorstellung an eine kaputte Festplatte tut weh. Alle Daten die nicht gesichert wurden sind meist für immer verloren. Das muss nicht so ablaufen, denn ist schnell eine Lösung gefunden um dieser Vorstellung ein Ende zu bereiten. Dann tut nur noch der Geldbeutel weh, weil man sich eine neue Festplatte kaufen muss. Fangen wir also an. Das einzige was wir brauchen ist das Terminal. Dabei ist es logischerweise egal, ob ihr direkt am Linux PC sitzt oder per SSH verbunden seit. Zuerst machen wir einen neuen User sicherung der unsere Daten in seinen Home-Ordner ablegt und später dies auch Automatisiert tut.

adduser sicherung

Bei einer Nachfrage nach Vollständigen Namen, Telefon-Nr. oder Büro-Nr. kann alles mit Enter quittiert werden. Natürlich solltet ihr ein Passwort vergeben. Wir wecheln mit cd ~sicherung/ in das Heimatverzeichnis von unserem neuen User sicherung. Nun erstellen wir ein einfaches Skript mit nano backupscript.sh. Hier “programmieren” wir uns schnell ein Skript zusammen:

#!/bin/bash
#Backup for /var/www

#START

TIME=`date +%b-%d-%y`
FILENAME=backup_www_$TIME.tar.gz
SRCDIR=/var/www
DESDIR=/home/backup

echo create new backup
tar -cpzf $DESDIR/$FILENAME $SRCDIR
echo backup created

chown sicherung:sicherung $DESDIR/$FILENAME
chmod 750 $DESDIR/$FILENAME
echo setted rights to sicherung

#END

Am Anfang definiere ich 4 Variablen: Diese speichern mir das aktuelle Datum, Backup-Name, den zu sicherernde Ordner und den Zielpfad, also der Ordner, wo das Backup als .tar.gz gespeichert wird. Danach gebe ich im Terminal mit echo eine Zeile Text aus und kündige an, dass das Backup erstellt wird. Jetzt wird mit tar -cpzf ein .tar.gz-Archiv erstellt, wo der Ordner komprimiert zusammengefasst wird. Wie angekündigt, wird dieses im Zielpfad abgespeichert. Um später die Backups mit dem User sicherung verwalten zu können, ändere ich zur Sicherheit noch die Besitzerdaten des Backups mit chown. Würde man das Skript nun mit

/bin/bash ~sicherung/backupscript.sh

ausführen, würde man die echo-Ausgaben sehen und zu letzt ein Backup File im Ordner finden. Wir möchten dies aber gerne automatisieren, da man natürlich ein Backup von jedem Tag haben möchte. Dies lässt sich einfach über einen Cron-Job erledigen. Dieser führt dann beispielsweise jeden Tag um 2 Uhr morgens das Backupskript aus. So hat man von jeden Tag ein Backup, was schon fast mit einer Versionierung vergliechen werden kann. Cron-Jobs werden in einer Art “Tabelle” gespeichert und diese kann mit crontab -e bearbeitet werden. Sollte CronTab nach einem Editor fragen sollte man nano auswählen, weil wir diesen schon die ganze Zeit benutzen. Dann öffnet sich ein neues Editor Fenster wo wir am Ende der Datei folgende Zeile einfügen:

# CronJob fuer BackupScript in /home/sicherung
0 2 * * * /home/sicherung/backupscript.sh

Am Anfang der Zeile steht 0 2. Die 0 Steht für die Minuten und die 2 für die Stunden. Hierbei ist aber die Uhrzeit gemeint, was dann bedeutet, dass hier 02:00 Uhr gemeint ist. Die drei * sagen dem Cron Job, dass er das Skript jeden Tag ausfüren soll. Eine nährere Beschreibung der Intervalle werden in man crontab bzw. mit Google beschrieben. Mit STRG-X und Y verlassen wir den Editor und das Terminal verkündet, dass ein neuer Cron Job erstellt wurden. Jetzt wird jeden Tag um 2 Uhr morgens das Backup-Skript angeworfen und ein Backup des WWW-Ordners des Apache Servers erstellt. Das Skript ist so aufgebaut, dass man nur den SCRDIR abändern muss, wenn man einen anderen Ordner sichern will. Wenn man mehrere Ordner sichern will, kann man natürlich mehrere CronJobs und Scripte erstellen, die dann durch die Ordner laufen und Backups erstellen.

Nach oben