TEIL III - AUTOMATISIERUNG
1. Der Cronjob - Grundlagen
Nachdem in Teil I und II und beschrieben wurde, wie man Backups und Synchronisationen einrichtet und von Hand ausführt, kommt nun der interessanteste Teil:
Wir möchten das Backup oder die Synchronisation nicht mehr selber in Gang setzen müssen, sondern dies dem Mac überlassen. Dazu benutzt man einen sog. Cronjob, um immer um eine bestimmte Zeit automatisch das entsprechende Script zu starten.
Als erstes sollten -- damit die Scripte nicht unnötig auf dem Desktop herumliegen, denn sie sollen in Zukunft ja automatisch gestartet werden -- folgende Schritte ausgeführt werden:
1. Terminal starten
2. Eingeben (Achtung, Punkte "." genau beachten!):
Code:
mkdir .scripts
cd Desktop
mv <script> ../.scripts
Dies legt ein verstecktes Verzeichnis ".scripts" im Home-Verzeichnis an und verschiebt ein Script dorthin. Der Parameter <script> muss dabei durch den Namen eines Scripts ersetzt werden, z.B. "backup_home" oder "sync".
Um einen Cronjob einzurichten, ist es zuerst nötig, einige Dinge über seine Funktionsweise zu lernen. Ein Cronjob besteht im Prinzip nur aus einer Zeile Text (zur Installation später) und ist folgendermassen aufgebaut:
Code:
Minute Stunde Tag Monat Wochentag Befehl
Folgende Werte sind jeweils möglich:
Code:
0-60 0-23 1-31 1-12 0-6 Befehl
Die ersten fünf Spalten (Werte) dienen also dazu, die Zeit zu definieren, zu welcher ein bestimmter Befehl bzw. Script (= letzte Spalte) ausgeführt werden soll. Beim Wochentag (5. Spalte) bedeutet 0 Sonntag, 1 Montag, 2 Dienstag usw.
Dies lässt sich am leichtesten an ein paar praktischen Beispielen zeigen (die Namensgebung der Scripts stammt aus Teil II und III):
Beispiel 1: tägliches Backup des Home-Verzeichnisses um 20.00 Uhr
Code:
0 20 * * * $HOME/.scripts/backup_home
Die drei Sterne "*" stehen dabei für "jeden Tag des Monats", "jeden Monat", "jeden Wochentag"
Beispiel 2: Backup des Systems jeden Sonntag um 10.15
Code:
15 10 * * 0 $HOME/.scripts/backup_system
Die zwei Sterne "*" stehen dabei für "jeden Tag des Monats", "jeden Monat". Die "0" schränkt dies allerdings auf den Sonntag ein.
Beispiel 3: Backup des Systems am 17. jeden Monats um 15.40
Code:
40 15 17 * * $HOME/.scripts/backup_system
Die zwei Sterne "*" stehen dabei für "jeden Monat", "jeden Wochentag".
Beispiel 4: Synchronisation zweier Verzeichnisse zur vollen Stunde
Code:
0 * * * * $HOME/.scripts/sync
Die vier Sterne "*" stehen dabei für "jede Stunde", jeden Tag des Monats", "jeden Monat", "jeden Wochentag"
Beispiel 5: Synchronisation zweier Verzeichnisse jeden Montag im Dezember jeweils alle 15 Minuten
Code:
*/15 * 12 * 1 $HOME/.scripts/sync
Das Symbol "*/15" steht dabei für "alle 15 Minuten", die beiden Sterne "*" für "jede Stunde", "jeden Tag des Monats"
Zugegebenermassen ist Beispiel 5 ziemlich unrealistisch, aber es zeigt die vielen Möglichkeiten, die man hat, am besten.
2. Der Cronjob - Installation
Um jetzt einen Cronjob zu installieren, geht man wie folgt vor:
1. Terminal starten (Programme/Dienstprogramme)
2. Befehl ausführen:
und mit dem Admin-Passwort bestätigen.
Dies öffnet die sog. Crontab (Tabelle mit Cronjobs) des Users root. Selbstverständlich hat jeder Benutzer auf dem System eine eigene Crontab, die so bearbeitet werden kann:
Für manche Aktionen ist es aber nötig, die Crontab von root zu verwenden, weil es sonst Probleme mit Zugriffsrechten kommt (v.a. bei einem Clon des Systems). Schädlich ist es jedenfalls -- unabhängig davon, ob es unbedingt nötig ist -- nicht, solange man vorsichtig zu Werke geht.
3. Taste "i" (kleiner Buchstabe "I") drücken, um in die Tabelle zu schreiben
4. Cronjob einfügen, z.B.:
Code:
0 20 * * * /Users/<benutzer>/.scripts/backup_home
Achtung: in einem Cronjob müssen immer die absoluten (d.h. vollständigen) Pfade angegeben werden. Da im Beispiel mit der Crontab des Users root gearbeitet wird, kann ausserdem nicht das Kürzel $HOME benutzt werden, sondern man muss den Pfad ausschreiben. Der Parameter <benutzer> muss dabei durch den Kurznamen des aktuellen Benutzers ersetzt werden, z.B. "/users/sheep/.scripts/backup_home".
5. Taste "ESC" drücken
6. Eingeben
und mit ENTER bestätigen.
(Doppelpunkt, kleines "W", kleines "Q", ENTER)
Damit ist der Cronjob installiert, was im Terminal entsprechend angezeigt wird. Von nun an wird um die eingestellte Zeit (im Beispiel jeden Tag um 20.00 Uhr) ein Script gestartet (im Beispiel dasjenige für ein Backup des Home-Verzeichnisses).
3. Der Cronjob - Feinheiten und Fehlerbehebung
Wie man sich leicht denken kann, ist es möglich, dass ein Cronjob ab und zu "ins Leere läuft", wenn z.B. die externe Festplatte gerade nicht am Computer hängt, der ander Mac oder PC im Netzwerk nicht läuft oder auch einfach der Mac sich gerade im Ruhezustand befindet.
Dies ist an sich kein Grund zur Sorge, da nichts weiter passiert. Allerdings macht es Sinn, gewisse Vorkehrungen zu treffen, damit a) der Cronjob möglichst oft durchlaufen kann und b) keine Benachrichtigungs-Mails vom System versendet werden. Letzteres ist ein normales Verhalten eines Unix-Systems und äussert sich darin, dass man beim Öffnen des Terminals eine Meldung "You have new mail" erhält.
Um den (hier i.d.R. unnötigen) Mail-Versand zu stoppen, kann man den Cronjob mit der Eweiterung ">> /dev/null 2>&1" versehen, also z.B. so:
Code:
0 20 * * * /Users/<benutzer>/.scripts/backup_home >> /dev/null 2>&1
Damit der Cronjob möglichst oft durchlaufen kann, ist es bei einer externen Festplatte sinnvoll, vor dem Ausführen des Scripts zu versuchen, diese zu mounten (falls sie angeschlossen, aber nicht gemountet ist):
Code:
0 20 * * * /usr/sbin/diskutil mount /dev/disk2s10 && /Users/<benutzer>/.scripts/backup_home >> /dev/null 2>&1
Die Bezeichnung "disk2s10" ist hier beispielhaft. Sie kann herausgefunden werden, indem man im Terminal eintippt:
was eine solche Ausgabe ergibt:
Code:
/dev/disk0
#: type name size identifier
0: Apple_partition_scheme *74.5 GB disk0
1: Apple_partition_map 31.5 KB disk0s1
2: Apple_HFS Macintosh HD 74.4 GB disk0s3
/dev/disk2
#: type name size identifier
0: Apple_partition_scheme *149.1 GB disk2
1: Apple_partition_map 31.5 KB disk2s1
2: Apple_Driver43 28.0 KB disk2s2
3: Apple_Driver43 28.0 KB disk2s3
4: Apple_Driver_ATA 28.0 KB disk2s4
5: Apple_Driver_ATA 28.0 KB disk2s5
6: Apple_FWDriver 256.0 KB disk2s6
7: Apple_Driver_IOKit 256.0 KB disk2s7
8: Apple_Patches 256.0 KB disk2s8
9: Apple_HFS System 74.4 GB disk2s10
10: Apple_HFS Daten 74.4 GB disk2s12
/dev/disk0 ist dabei die interne Festplatte, /dev/disk2 die Firewire-Platte. Ganz unten erkennt man -- in meinem Beispiel -- die beiden Partitionen "Daten" und "System" auf der FW-Platte, ihre Bezeichnungen sind disk2s10 und disk2s12.
FRAGEN bitte in folgendem Thread posten:
http://www.macuser.de/forum/showthre...40#post1224140
Lesezeichen