Disfunctions.de

Das Blog der gnadenlosen Fehlfunktionen!

Backupscript

Erstellt von Fabian am Sonntag 1. November 2009

Folgendes Szenario: Ich habe eine Festplatte auf der ich Dokumente,Filme,Musik und Ebooks speichere. Damit diese Daten bei einem crash der Festplatte nicht verloren gehen habe ich eine externe Festplatte in der selben Größe auf die die Daten 1:1 kopiert werden. Soweit ist alles noch ganz schön, allerdings ist es nervig jeden Tag die Daten per hand rüber zu kopieren und sämtliche Ersetzen/Überspringen Dialoge per Hand weg zu klicken. Mal ganz davon abgesehen dass man natürlich auch am „Ende“ des Tages daran denken muss. Natürlich könnte man jetzt Programme wie Unison verwenden doch auch das muss per Hand gestartet werden.

Da ich keine Lust mehr hatte alles per Hand zu starten und es sowieso öfters einfach vergessen habe bzw. einfach nachts keinen Nerv mehr hatte meine Platten zu synchronisieren habe ich mich daran gemacht ein kleines Script zu schreiben welches mir diese lästige Aufgabe abnimmt. Das komplette Script findet ihr nochmal am Ende.

Um das Script zu erstellen öffnet ihr den Editor Eurer wahl. Die Dateiendung muss .sh sein. Jetzt müssen wir das Script noch ausführbar machen, sonst passiert nämlich nichts.

 chmod +x /home/fabian/Desktop/backup.sh 

Machen wir uns Schritt für Schritt an das Script:

#!/bin/sh

Hiermit sagen wir dem System dass es sich um ein Script handelt, der Pfad kann je nach System variieren.

echo Festplatten prüfen

echo erzeugt eine Ausgabe. In diesem Fall „Festplatten prüfen“.

if /media/truecrypt1/check1 ;
then echo Quelle gemountet
else truecrypt --mount  /dev/sda /media/truecrypt1
fi

Jetzt wird es etwas interessanter. An dieser stelle überprüfen wir wie oben erwähnt ob die Festplatten eingehängt sind. Hierzu habe ich auf den Platten jeweils eine Datei mit dem Titel check1 erstellt. Mit if überprüfen wir einfach ob diese Datei „vorhanden“ ist. Sollte dies der Fall sein sagt uns das Script mit ‚then echo‘ dass die Quelle (in diesem Fall meine interne Festplatte) gemountet ist. Sollte dies nicht der Fall sein starten das Script truecrypt und hängt die Festplatte ein. Dabei erscheinen die bekannten Dialoge in denen wir das Passwort eingeben müssen und uns als root authentifizieren müssen. Wer möchte kann die Passwort eingabe mit –password=’euerpasswort‘ automatisch machen lassen. Allerdings steht euer Passwort dann im Script ;). Mit fi beenden wir die Abfrage.

if /media/truecrypt2/check1 ;
then echo Quelle gemountet
else truecrypt --mount  /dev/sdc1 /media/truecrypt2
fi

Das gleiche Spiel mit der Externen Festplatte.

Anm.:Leute die kein Truecrypt verwenden müssen ‚truecrypt –mount‘ einfach durch ‚mount‘ ersetzen. Dann sollte es funktionieren. Dies ist aber auch nur nötig wenn eure Festplatten nicht sowieso immer gemountet sind.

rsync -a -P  /media/truecrypt1/filme/ /media/truecrypt2/filme/

Jetzt kommen wir zur eigentlichen synchronisation. Wir starten rsync mit den Optionen -a und -p.

-a fasst folgende Optionen zusammen:-r kopiert Unterverzeichnisse.-l kopiert symbolische Links.-p behält Rechte der Quelldatei bei.-t behält Zeiten der Quelldatei bei.-g behält Gruppenrechte der Quelldatei bei.-o behält Besitzrechte der Quelldatei bei (nur root).-D behält Gerätedateien der Quelldatei bei (nur root).

-P aktiviert folgende Optionen:--progress Fortschrittsanzeige beim Transfer Anzeigen,--partial Fortsetzung des Transfers bei Abbruch. In meinem Fall synchronisiere ich noch weiter Ordner, das Prinzip bleibt natürlich das selbe.

Damit das Script dann auch automatisch startet müssen wir die crontab anpassen. Öffnet dafür eure Konsole und tippt ein

crontab -e

. Jetzt öffnet sich euer Editor, in meinem Fall Vim. Durch drücken von I könnt ihr jetzt folgende Zeile einfügen:

30:21 * * 1,2,3,4,5,6,7 /PfadzumScript

Die Eingabe beendet ihr durch Esc. Verlassen könnt ihr Vim indem ihr :wq (=speichern und beenden) tippt.

Crontab mach im Grunde nichts anderes als zu Prüfen ob die Bedingungen erfüllt sind um dann eine Aktion auszuführen. Hier in unserem Fall dann: In Minute 30 in Stunde 20 wenn der Wochentag 1,2,3,4,5,6 oder 7 (Mo,Di,Mi,Do,Fr,Sa,So) ist unser Script auszuführen. Oder „auf Deutsch“ : Jeden Tag um 21:30 Uhr.

So dass wäre auch schon alles. Das Script lässt sich ganz einfach anpassen Ihr müsst nur die Pfaden anpassen.

#!/bin/sh

echo Festplatten prüfen
echo Prüfe Quelle

if /media/truecrypt1/check1 ;
then echo Quelle gemountet
else truecrypt --mount  /dev/sda /media/truecrypt1
fi

if /media/truecrypt2/check1 ;
then echo Quelle gemountet
else truecrypt --mount  /dev/sdc1 /media/truecrypt2
fi

echo Festplatten gemountet

echo Starte Backup Musik
rsync -a -P  /media/truecrypt1/musik/ /media/truecrypt2/musik/
echo Backup Musik beendet

echo Starte Backup Filme
rsync -a -P  /media/truecrypt1/filme/ /media/truecrypt2/filme/
echo Backup Filme beendet

echo Starte Backup Ebooks
rsync -a -P  /media/truecrypt1/ebooks/ /media/truecrypt2/ebooks/
echo Backup Ebooks beendet

echo Starte Backup Programme
rsync -a -P  /media/truecrypt1/programme/ /media/truecrypt2/programme/
echo Backup Programme beendet

echo Starte Backup Dokumente
rsync -a -P  /media/truecrypt1/dokumente/ /media/truecrypt2/dokumente/
echo Backup Dokumente beendet

echo Backup beendet

Kommentar schreiben

XHTML: Sie können diese Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>