Automatische Backups und Syncs unter OS X

Dieses Thema im Forum "Mac OS X" wurde erstellt von sheep, 05.11.2005.

  1. sheep

    sheep Thread Starter Gast

    EINLEITUNG: AUTOMATISCHE BACKUPS UND SYNCS UNTER OS X

    1. Übersicht

    Es gibt hier im Forum sehr viele Anfragen dazu, wie man unter OS X am einfachsten und wenn möglich kostenlos Backups erstellt. Mal sollen es nur einzelne Ordner sein, ein ander mal soll das ganze System auf eine externe Festplatte geclont werden, oder auch nur zwei Verzeichnisse auf zwei Macs oder PCs regelmässig abgeglichen werden.

    Das alles geht -- und dazu noch automatisiert -- mit OS X bzw. Unix schnell, einfach und völlig kostenlos. Ich werde daher hier versuchen, möglichst zielgerichtet, Schritt für Schritt und ohne grosse Erläuterungen der technischen Grundlagen (die kann man sich durch Bücher oder anderswo im Internet erwerben, hier geht es nur um das Resulatat) zu erklären, wie man mit dem Unix-Tool "rsync" und einem Cronjob automatisierte Backups und Syncs einrichtet.

    Wie gesagt, es geht hier nur um eine funktionierende und effiziente Backup-Lösung -- angesprochen sind daher gerade (blutige) Anfänger, die mit Unix noch nie etwas zu tun hatten und solche, die weder Zeit noch Lust haben, sich mit den technischen Hintergründen zu befassen.


    2. Erläutert werden hier:

    - "http://www.macuser.de/forum/showpost.php?p=1224146&postcount=2"]TEIL I[: Backups (gelöschte Dateien behalten, Klons, bootbar) mit rsync
    - http://www.macuser.de/forum/showpost.php?p=1224154&postcount=3"]TEIL II: Synchronisation (Verzeichnisse, zwischen zwei Macs oder mit einem PC) mit rsync
    - "http://www.macuser.de/forum/showpost.php?p=1224160&postcount=4"]TEIL III: die Automatisierung davon durch einen Cronjob

    http://www.macuser.de/forum/showpost.php?p=1816962&postcount=7"]NEU: Inkrementelle, rotierende Backups

    Empfehlung:
    Ich empfehle allen Benutzern den Einsatz von inkrementellen Backups. Diese Lösung bietet eine wesentlich höhere Datensicherheit als normale Backups, da mehrere alte Versionen behalten und rekonstruiert werden können (ähnlich wie beim kürzlich vorgestellten TimeMachine von OS X 10.5 Leopard).


    3. Voraussetzung ist nur ein Mac mit OS X Tiger* und ein geeignetes Backup-Medium.

    Optimal als Medium sind externe Festplatten mit Firewire-Anschluss (oder interne Festplatten), ebenfalls gut geeignet (ausser für System-Backups) ist ein anderer Mac oder PC, mit dem eine Netzwerkverbindung besteht. Ausserdem ist es möglich (für kleinere Datenmengen) USB-Sticks zu verwenden. Ebenfalls möglich ist die Verwendung eines webDAV-Dienstes wie z.B. .Mac oder GMX-Mediacenter (Tipp von MacApfel). Nicht geeignet sind hingegen DVDs oder CD-ROMs.

    * Das rsync-Tool früherer Versionen von Mac OS X verfügt leider nicht über die Möglichkeit, die sog. Resource Forks (zuständig u.a. für die Namensgebung der Standardverzeichnisse) zu kopieren. Daher funktionieren die Scripts momentan leider nur auf OS X 10.4 vollständig; eine Notlösung bestünde allenfalls darin, jeweils die Option "-E" wegzulassen, das ist allerdings eher nicht zu empfehlen.

    (vielen Dank an maceis für diesen Hinweis)


    ========================================
    UPDATES
    ========================================

    FAQ VERFÜGBAR
    Ab sofort ist unter Ergänzungen eine Sammlung der meistgestellten Fragen verfügbar. Ich werde sie bei Bedarf und Gelegenheit erweitern.

    ========================================
     
    Zuletzt von einem Moderator bearbeitet: 09.04.2016
  2. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    Teil I - Backups

    TEIL I - BACKUPS

    1. Übersicht

    In diesem Abschnitt wird beschrieben, wie man Backups unter OS X erstellt und zwar für

    - das Home-Verzeichnis
    - (ein) einzelne(s) Verzeichnis(se)
    - das komplette System (bootbar)

    Als Backup-Medium ist -- besonders bei grossen Datenmengen -- eine externe Festplatte zu empfehlen. Für einen bootbaren Klon des Systems ist eine externe Festplatte mit Firewire-Anschluss (also kein USB!) oder eine interne Festplatte zwingend notwendig. Ansonsten genügt ein anderer Mac oder PC, der über Netzwerk angeschlossen ist.

    Die folgenden Kapitel bauen bewusst nicht aufeinander auf, sondern können je nach persönlichem Bedarf benutzt werden, um ein Backup einzurichten.


    2. Das Home-Verzeichnis

    Um das komplette Home-Verzeichnis auf eine externe Festplatte oder einen Netzwerkrechner abzugleichen, geht man wie folgt vor:

    1. "TextEdit" starten und im Menü "Format" den Punkt "In reinen Text umwandeln" wählen


    2. Per copy & paste folgenden Text einfügen:
    Code:
    #!/bin/sh
    
    #Variablen fuer die Pfade
    declare quelle="$HOME"
    declare ziel="<ziel>"
    
    #Log schreiben (Anfangszeit)
    /bin/echo "Backup begonnen um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    
    #Backup ausführen und protokollieren
    /usr/bin/time /usr/bin/rsync -avE $quelle/ $ziel/ > $ziel/protokoll.log
    
    #Log schreiben (Endzeit)
    /bin/echo "Backup beendet um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    /bin/echo "--------------------------------------" >> $ziel/backup.log
    Dabei muss der Parameter "<ziel>" ganz am Anfang durch einen entsprechenden Pfad ersetzt werden. Wenn z.B. die externe Festplatte oder das gemountete Netzwerk-Share "Backup" heisst (= Name, der auf dem Desktop angezeigt wird) und der Kurzname des aktuellen Benutzers "sheep" lautet, so:

    Code:
    /Volumes/Backup/sheep
    Der Ordner "sheep" muss dabei auf dem Ziel-Medium vorher angelegt werden; er braucht auch nicht unbedingt dem Benutzernamen zu entsprechen, sondern kann beliebig gewählt werden. Der Name des Volumes darf keine Leerzeichen enthalten!


    3. Datei unter dem Namen "backup_home"* auf dem Schreibtisch speichern und schliessen.
    *ACHTUNG: TextEdit versieht standardmässig alle Dateien mit dem Suffix .txt, was hier unerwünscht ist. Daher sollte man im Speichern-Dialog den Haken bei ".txt verwenden, falls kein Suffix angegeben ist" entfernen.


    4. Programm "Terminal" (Programme/Dienstprogramme) starten und eingeben:
    Code:
    cd Desktop
    chmod +x backup_home
    Jetzt ist das Script eine ausführbare Datei (vereinfacht: ein Unix-Programm) und kann ausgeführt werden, indem man eingibt:

    Code:
    sudo ./backup_home
    Diese Eingabe verlangt ein Passwort und zwar dasjenige des aktuellen Benutzers (Admin-Konto wird vorausgesetzt). Dieses muss blind (!) eingegeben und mit Enter bestätigt werden. Danach startet der Sicherungsvorgang.

    Wenn alles korrekt funktioniert, ist nach dem Ausführen das gesamte Home-Verzeichnis auf dem Ziel-Medium "Backup" im Ordner "sheep" (= Benutzername) gesichert. Ausserdem wird dort eine Datei mit Namen "backup.log" angelegt, aus der entnommen werden kann, wann die letzte Sicherung durchgeführt wurde. Zusätzlich gibt es eine Datei "protokoll.log", in welcher der gesamte Sicherungsvorgang inkl. allfälliger Fehler protokolliert wird.


    3. (Ein) Einzelne(s) Verzeichnis(se)

    Um ein beliebiges Verzeichnis -- im Beispiel den Ordner für die Mails von AppleMail -- auf eine externe Festplatte oder einen Netzwerkrechner abzugleichen, geht man wie folgt vor:

    1. "TextEdit" starten und im Menü "Format" den Punkt "In reinen Text umwandeln" wählen


    2. Per copy & paste folgenden Text einfügen:

    Code:
    #!/bin/sh
    
    #Variablen fuer die Pfade
    declare quelle="$HOME/Library/Mail"
    declare ziel="<ziel>"
    
    #Log schreiben (Anfangszeit)
    /bin/echo "Backup begonnen um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    
    #Backup ausführen und protokollieren
    /usr/bin/time /usr/bin/rsync -avE $quelle/ $ziel/ > $ziel/protokoll.log
    
    #Log schreiben (Endzeit)
    /bin/echo "Backup beendet um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    /bin/echo "--------------------------------------" >> $ziel/backup.log
    Dabei muss der Parameter "<ziel>" ganz am Anfang durch einen entsprechenden Pfad ersetzt werden. Wenn z.B. die externe Festplatte oder das gemountete Netzwerk-Share "Backup" heisst (= Name, der auf dem Desktop angezeigt wird), so:

    Code:
    /Volumes/Backup/Mail
    Der Ordner "Mail" muss dabei auf dem Ziel-Medium vorher angelegt werden; er braucht auch nicht unbedingt dem Benutzernamen zu entsprechen, sondern kann beliebig gewählt werden. Der Name des Volumes darf keine Leerzeichen enthalten!


    3. Datei unter dem Namen "backup_home"* auf dem Schreibtisch speichern und schliessen.
    *ACHTUNG: TextEdit versieht standardmässig alle Dateien mit dem Suffix .txt, was hier unerwünscht ist. Daher sollte man im Speichern-Dialog den Haken bei ".txt verwenden, falls kein Suffix angegeben ist" entfernen.


    4. Programm "Terminal" (Programme/Dienstprogramme) starten und eingeben:
    Code:
    cd Desktop
    chmod +x backup_mail
    Jetzt ist das Script eine ausführbare Datei (vereinfacht: ein Unix-Programm) und kann ausgeführt werden, indem man eingibt:

    Code:
    sudo ./backup_mail
    Diese Eingabe verlangt ein Passwort und zwar dasjenige des aktuellen Benutzers (Admin-Konto wird vorausgesetzt). Dieses muss blind (!) eingegeben und mit Enter bestätigt werden. Danach startet der Sicherungsvorgang.

    Wenn alles korrekt funktioniert, ist nach dem Ausführen das Verzeichnis, welche die Mails von AppleMail hält, auf dem Ziel-Medium "Backup" im Ordner "Mail" gesichert. Ausserdem wird dort eine Datei mit Namen "backup.log" angelegt, aus der entnommen werden kann, wann die letzte Sicherung durchgeführt wurde. Zusätzlich gibt es eine Datei "protokoll.log", in welcher der gesamte Sicherungsvorgang inkl. allfälliger Fehler protokolliert wird.


    4. Das komplette System (bootbar)

    Um das komplette System auf eine externe Festplatte mit Firewire-Anschluss zu clonen, geht man wie folgt vor:

    1. "TextEdit" starten und im Menü "Format" den Punkt "In reinen Text umwandeln" wählen


    2. Per copy & paste folgenden Text einfügen:


    Code:
    #!/bin/sh
    
    #Variablen fuer die Pfade
    declare quelle="/"
    declare ziel="<ziel>"
    
    #Log schreiben (Anfangszeit)
    /bin/echo "System-Clon begonnen um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    
    #Clon anfertigen und Vorgang protokollieren
    /usr/bin/time /usr/bin/rsync -avE --delete --exclude-from /backup_excludes.txt $* $quelle $ziel/ > $ziel/protokoll.log
    
    #Volumen bootbar machen
    bless -folder $ziel/System/Library/CoreServices
    #Log schreiben (Endzeit)
    /bin/echo "System-Clon beendet um:" >> $ziel/backup.log
    /bin/date >> $ziel/backup.log
    /bin/echo "--------------------------------------" >> $ziel/backup.log
    Dabei muss der Parameter "<ziel>" ganz am Anfang durch einen entsprechenden Pfad ersetzt werden. Wenn z.B. die externe Festplatte "Backup" heisst (= Name, der auf dem Desktop angezeigt wird), so:

    Code:
    /Volumes/Backup
    Wichtig:
    - Ein bootfähiger System-Clon erfordert eine eigene, leere Festplatte oder eine eigene, leere Partition auf dieser! Falls nicht vorhanden, muss eine solche mit dem Festplattendienstprogramm angelegt werden (Vorsicht, beim Partitionieren gehen alle Daten auf der Platte verloren)!
    - Die Festplatte muss Benutzerrechte unterstützen! Um diese zu aktivieren, klickt man auf das entsprechende Volume auf dem Desktop und wählt "Ablage" | "Informationen". Dort muss der Haken vor "Eigentümer auf diesem Volume ignorieren" entfernt werden!


    3. Datei unter dem Namen "backup_system"* auf dem Schreibtisch speichern und schliessen.
    *ACHTUNG: TextEdit versieht standardmässig alle Dateien mit dem Suffix .txt, was hier unerwünscht ist. Daher sollte man im Speichern-Dialog den Haken bei ".txt verwenden, falls kein Suffix angegeben ist" entfernen.


    4. Eine weitere neue Datei mit TextEdit anlegen, "Datei" | "In reinen Text umwandeln" wählen und folgendes einfügen:

    Code:
    /tmp/*
    /proc
    /Network/*
    /Volumes/*
    /cores/*
    */.Trash
    /dev/*
    /afs/*
    /automount/*
    /private/tmp/*
    /private/var/run/*
    /private/var/spool/postfix/*
    Dann die Datei auf dem Desktop unter dem Namen "backup_excludes.txt"* speichern. Diese Ausnahmeliste wird später dafür sorgen, dass der Sicherungsvorgang reibungslos durchlaufen kann.
    *ACHTUNG: TextEdit versieht standardmässig alle Dateien mit dem Suffix .txt, was hier unerwünscht ist. Daher sollte man im Speichern-Dialog den Haken bei ".txt verwenden, falls kein Suffix angegeben ist" entfernen.


    5. Programm "Terminal" (Programme/Dienstprogramme) starten und eingeben:
    Code:
    cd Desktop
    chmod +x backup_system
    sudo mv backup_excludes.txt /
    Die letzte Eingabe verlangt ein Passwort und zwar dasjenige des aktuellen Benutzers (Admin-Konto wird vorausgesetzt). Dieses muss blind (!) eingegeben und mit Enter bestätigt werden.

    Jetzt ist das Script eine ausführbare Datei (vereinfacht: ein Unix-Programm) und die Ausnahme-Liste ist an ihrem Platz, sodass das Script nun ausgeführt werden kann, indem man eingibt:

    Code:
    sudo ./backup_system
    Allenfalls muss hier das Admin-Passwort erneut eingegeben werden. Danach startet der Sicherungsvorgang.

    Wenn alles korrekt funktioniert, ist nach dem Ausführen ein bootbarer Clon des aktuellen Systems auf der externen oder internen Festplatte vorhanden. Von diesem kann gebootet werden, indem man den Mac neu startet und ganz am Anfang ALT gedrückt hält. Es erscheint nun eine Auswahl, aus welcher man das zu startende System wählen kann.


    FRAGEN bitte in folgendem Thread posten:
    http://www.macuser.de/forum/showthread.php?p=1224140#post1224140
     
    Zuletzt bearbeitet: 01.07.2006
  3. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    Teil II - Synchronisation

    TEIL II - SYNCHRONISATION

    Wichtiger Hinweis:

    In letzter Zeit sind einige Probleme und Unklarheiten bezüglich dieses Abschnitts aufgetaucht. Das hier beschriebene Script verhält sich möglicherweise anders, als vom Benutzer beabsichtigt, weil es diesbezüglich sehr unterschiedliche Anforderungen gibt. Bitte bei Unklarheiten unbedingt die [DLMURL="http://www.macuser.de/forum/showpost.php?p=1224165&postcount=5"]FAQ, Abschnitt "Spezielle Fragen zu Synchronisationen"[/DLMURL] lesen.

    Wer nach dieser Anleitung vorgeht, sollte sich einfach darüber im Klaren sein, dass er oder sie das Script unter Umständen noch den eigenen Bedürfnissen anpassen muss (Hilfe erhält man ggf. im Frage-Thread, siehe unten). Ausserdem sollte man es auf keinen Fall auf wichtige Daten anwenden, ohne von diesen vorher eine Sicherungskopie angelegt zu haben! Das Script überschreibt alte Versionen von Dateien (dafür ist es da), also bitte nicht unüberlegt damit herumexperimentieren!



    In diesem Abschnitt wird beschrieben, wie man zwei Ordner unter OS X synchronisiert. Dabei wird nicht einfach ein Verzeichnis auf ein externes Medium oder einem anderen Rechner gesichert, sondern es werden zwei Verzeichnisse miteinander abgeglichen, sodass sie immer den genau gleichen Inhalt aufweisen. Dies kann z.B. dann sinnvoll sein, wenn man zwei Macs besitzt und auf beiden die Mails, das Adressbuch etc. abgleichen möchte.

    Hier wird davon ausgegangen, dass das Home-Verzeichnisses eines anderen Macs gemountet wurde (freigegeben über Samba oder APF). Um die Synchronisation einzurichten -- im Beispiel werden die AppleMail-Verzeichnisse der beiden Macs abgeglichen -- geht man wie folgt vor:


    1. "TextEdit" starten und im Menü "Format" den Punkt "In reinen Text umwandeln" wählen


    2. Per copy & paste folgenden Text einfügen:

    Code:
    #!/bin/sh
    
    #Variablen fuer die Pfade
    declare quelle="$HOME/Library/Mail"
    declare ziel="<ziel>/Library/Mail"
    
    #Synchronisation ausführen
    /usr/bin/rsync -avE $quelle/ $ziel/
    /usr/bin/rsync -avE $ziel/ $quelle/
    Dabei muss der Parameter "<ziel>" ganz am Anfang durch einen entsprechenden Pfad ersetzt werden. Wenn z.B. das gemountete Netzwerk-Share "iMac" (= Name, der auf dem Desktop angezeigt wird) heisst, so:

    Code:
    /Volumes/iMac
    Der Name des Volumes darf keine Leerzeichen enthalten!

    Selbstverständlich können $quelle und $ziel durch beliebige Pfade ersetzt werden, z.B. für das Adressbuch so:

    Code:
    declare quelle="$HOME/Library/Application\ Support/AddressBook"
    declare ziel="/Volumes/iMac/Library/Application\ Support/AddressBook"

    3. Datei unter dem Namen "sync_mail"* dem Schreibtisch speichern und schliessen.
    *ACHTUNG: TextEdit versieht standardmässig alle Dateien mit dem Suffix .txt, was hier unerwünscht ist. Daher sollte man im Speichern-Dialog den Haken bei ".txt verwenden, falls kein Suffix angegeben ist" entfernen.


    4. Programm "Terminal" (Programme/Dienstprogramme) starten und eingeben:
    Code:
    cd Desktop
    chmod +x sync_mail
    Jetzt ist das Script eine ausführbare Datei (vereinfacht: ein Unix-Programm) und kann ausgeführt werden, indem man eingibt:

    Code:
    ./sync_mail
    Wenn alles korrekt funktioniert hat, befindet sich nach dem Synchronisieren in den beiden Verzeichnissen exakt derselbe Inhalt, im Beispiel werden also auf jedem der Macs alle Mails oder Adressen von beiden Rechnern vorhanden sein, so ähnlich wie es mit .mac möglich ist.


    FRAGEN bitte in folgendem Thread posten:
    http://www.macuser.de/forum/showthread.php?p=1224140#post1224140
     
    Zuletzt bearbeitet: 24.07.2006
  4. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    Teil III - Automatisierung

    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:
    Code:
    sudo crontab -e
    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:

    Code:
    crontab -e
    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
    Code:
    :wq
    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:

    Code:
    sudo diskutil list
    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/showthread.php?p=1224140#post1224140
     
    Zuletzt bearbeitet: 06.11.2005
  5. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    Ergänzungen

    ERGÄNZUNGEN

    FAQ - häufig gestellte Fragen
    Hier findet man ein paar der häufig gestellten Fragen (und solche, die man sich leicht stellen könnte) zu Backups im Allgemeinen und der hier beschriebenen Methode im Besonderen.

    Allgemeines / Methode

    Q:
    Ich benutze das Programm XYZ für meine Backups. Warum sollte ich diese Methode benutzen, wo sie doch relativ kompliziert ist?
    A: Ein Script bietet Flexibilität, die man für kein Geld der Welt in Form eines Tools kaufen kann. Ausserdem sind die Möglichkeiten zur Automatisierung quasi unlimitiert.

    Q: Ich benutze das Programm XYZ für meine Backups und kann das nur jedem empfehlen!
    A: Dann benutze dieses bitte weiter! Ein Hinweis darauf ist hier aber weder nötig noch sinnvoll.

    Q: Warum sollte ich meine Daten nicht einfach sichern, indem ich sie im Finder auf das Medium XYZ ziehe?
    A: Kannst du natürlich, ist aber nicht sinnvoll. Die zu übertragende Datenmenge ist viel höher als mit dieser Methode, der Finder wird u.U. blockiert und das Ganze lässt sich kaum automatisieren.

    Q: Ich möchte Backups per Klick starten statt automatisiert oder vom Terminal aus.
    A: Dazu reicht es aus, den Dateinamen des Scripts mit der Endung ".command" zu versehen. Diese Datei lässt sich dann per Doppelklick ausführen und sogar ins Dock legen (links neben dem Papierkorb).

    Q: Kann ich während dem Backup-Vorgang normal weiterarbeiten oder muss ich Angst haben, dass Dateien deswegen nicht gesichert werden?
    A: Das ist ohne Weiteres möglich. Der Vorgang wird unter allen Umständen vollständig durchlaufen, allenfalls dauert er etwas länger. Jedoch werden keine Dateien übersprungen (Ausnahme ist die sehr unwahrscheinliche Situation, dass man eine Datei von A nach B verschiebt, während B bereits gesichert wurde, A aber noch nicht).

    Q: Was passiert, wenn mein Rechner zu jenem Zeitpunkt, wo das Backup automatisch startet, nicht läuft?
    A: Es geschieht gar nichts. Wenn der Mac im Ruhezustand oder ausgeschaltet ist, bleibt er dies auch und die Sicherung wird auch nicht nach dem Wieder-Einschalten nachgeholt.


    Backup-Medien / Bootbare Clons

    Q:
    Kann ich auch eine USB-Festplatte benutzen?
    A: Ja! Du kannst aber nicht davon booten, das geht nur mit Firewire.


    Zurücksichern / Wiederherstellung

    Q:
    Angenommen, ich komme in eine Situation, wo ich das Backup brauche - wie muss ich vorgehen, um meine Daten zurückzubekommen?
    A: Das kommt auf die Sicherungsart an:
    - "Normale" Daten können ohne Weiteres im Finder an ihren Platz zurückgeschoben werden
    - Einen System-Clon spielt man am einfachsten mit dem Festplatten-Dienstprogramm zurück (den Clon booten, Festplatten-Dienstprogramm starten --> auf "Wiederherstellen" klicken --> als Quelle den Clon und als Ziel die interne Festplatte angeben)
    - Ein Benutzerordner mit allen Daten und Einstellungen kann mit dem Migrationsassistenten von Apple sehr einfach wiederhergestellt werden


    Betriebssysteme / Kompatibilität

    Q:
    Ich habe Mac OS X "Panther" 10.3. Kann ich meine Daten trotzdem mit dieser Methode sichern?
    A: Ja, aber mit Einschränkungen. Das Sichern der sog. Ressource Forks (beeinhalten Dateiinformationen wie Icons) wird nämlich nicht unterstützt. Allerdings kann man Abhilfe schaffen, indem man eine andere Version von rsync als die mitgelieferte benutzt, welche die nötige Option mitbringt - z.B. die von rsyncX.

    Q: Ich habe einen PC mit Linux / *BSD / anderes Unix oder einen Mac mit Linux. Kann ich diese Methode auch dort benutzen?
    A: Da rsync für so gut wie jedes Unix-System existiert, ist das ohne Weiteres möglich. Man muss sich allerdings über ein paar Dinge im Klaren sein, die bei jedem System anders sein können (z.B. ist die Option -e nur unter OS X vorhanden und die Pfade können natürlich variieren).


    Spezielle Fragen zu Synchronisationen

    Q:
    Was passiert, wenn eine Datei auf beiden zu synchronisierenden Rechnern geändert wird?
    A: Die ältere Version (d.h. die zuerst geänderte) wird vollständig und unwiderruflich weggeschmissen. Nur die neuere (d.h. die zuletzt geänderte) wird behalten.

    Q: Das o.g. Verhalten gefällt mir nicht, was kann ich tun?
    A: Momentan habe ich dafür leider keine Lösung, das ist das Verhalten von rsync, wie es hier gewollt ist. Andere Tools, wie z.B. Subversion sollen aber dazu in der Lage sein, verschiedene Versionen von Dateien sinnvoll zu vereinen.

    Q: Wenn ich eine Datei auf einem der Macs lösche, welche auf dem anderen ebenfalls vorhanden ist, wird sie durch letztere wiederhergestellt. Warum und was kann ich dagegen tun?
    A: Das Verhalten ist so gewollt, um unbeabsichtige Datenverluste zu vermeiden. Wenn du das wirklich ändern willst, kannst du den Parameter --delete bei beiden rsync-Aufrufen im Script verwenden.


    Fehlermeldungen / Probleme
    Q:
    Ich erhalte eine Meldung, dass einige Dateien mit Namen à la "._xyz" nicht transferiert werden konnten.
    A: Dies kann einfach ignoriert werden, da diese Dateien keine Daten enthalten, die den Benutzer interessieren (es handelt sich um sog. Ressource Forks, welche Dateiinformationen wie Label, Icon etc. enthalten, die in Einzelfällen nicht kopiert werden können).

    Q: Das Terminal teilt mir mit, dass mein Script nicht gefunden werden kann, wenn ich es ausführe. Ich bin aber absolut sicher, dass es da ist!
    A: Dieses Problem liegt an einem Fehler von TextEdit, der bei vereinzelten Benutzern auftritt (bisher ist unklar, wann oder warum dies passiert). Zuverlässige Abhilfe lässt sich schaffen, indem man [DLMURL="http://www.macuser.de/forum/showpost.php?p=2430778&postcount=444"]nach dieser Anleitung[/DLMURL] mit dem Terminal-Editor VI das Script neu erstellt oder einen beliebigen anderen Text-Editor verwendet.
     
    Zuletzt bearbeitet: 30.12.2006
  6. HeckMeck

    HeckMeck MacUser Mitglied

    Beiträge:
    2.447
    Zustimmungen:
    12
    MacUser seit:
    11.11.2002
  7. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    UPDATE: Inkrementelle (rotierende) Backups

    Hallo liebe MUs

    Nach längerer Zeit gibts hier wieder mal ein Update:

    Aus einem Bedürfnis nach zusätzlicher Sicherheit heraus habe ich mich daran gemacht, ein neues Skript zu schreiben, das inkrementelle Backups erstellen kann.

    Ich habe im ursprünglichen Howto den Begriff leider falsch bzw. etwas anders verwendet, hier geht es jetzt um "richtige" inkrementelle Backups (auch rotierend genannt) - zur Klärung:

    Gemeint ist, dass mehrere Versionen des Backups angelegt werden. Es entsteht eine volle Sicherung und mehrere Sicherungen, die jeweils die Änderungen enthalten. Für den Benutzer allerdings erscheint es so, als wären alle Versionen volle Sicherungen, d.h. man kann in jedem Ordner sämtliche Dateien und Verzeichnisse wiederfinden. Apple hat kürzlich die Backup-Lösung TimeMachine vorgestellt, welche in Leopard (OS X 10.5) integriert werden soll. Die Funktionsweise dieses Konzeptes entspricht im Wesentlichen dem hier (allerdings ohne die Integration in die Oberfläche).


    Das Skript sieht so aus:

    Hinweis:
    Ab sofort wird hier wieder rsync von Apple benutzt und nicht mehr rsyncX (vielen Dank an Pseudemys für den Hinweis auf bestehende Fehler in rsyncX). Dies bedeutet lediglich, dass diese Version auch mit Intel-Macs vollständig kompatibel ist, ohne dass irgendwelche Änderungen vorgenommen werden müssten.

    Code:
    #!/bin/sh
    
    # INKREMENTELLLE BACKUPS
    
    # Die folgenden Variablen müssen vom Benutzer angepasst werden
    
            # Zu sicherndes Verzeichnis (z.B. /Users/):
              a="/Users/sheep/"
    
            # Verzeichnis bzw. Volume, in dem die Backups gespeicher werden sollen (z.B. /Volumes/Backup):
              b="/Volumes/Backup"
    
            # Anzahl zu sichernde Versionen (z.B. 5; das Minimum ist 2!):
              c=5
    
    
    # Ab hier sollte man normalerweise nichts mehr ändern müssen
    
    # Überprüfen, ob das Verzeichnis $b existiert bzw. das entsprechende Volume gemountet ist - abbrechen, falls nicht
    if [ -d $b ]; then
            echo "" > /dev/null
    else
            exit
    fi
    
    # Backup-Verzeichnisse erstellen, falls sie nicht existieren
    e=$c
    while [  $e -gt 0 ]; do
    let e=e-1
    if [ -d $b/backup.$e ]; then
            echo "" > /dev/null
    else
            mkdir $b/backup.$e
    fi
    done
    
    # Datum aufzeichnen (Beginn)
    touch $b/backup.log
    /bin/echo "Backup begonnen um:" >> $b/backup.log
    /bin/date >> $b/backup.log
    
    # Backup-Verzeichnisse rotieren
    let c=c-1
    d=$c
    rm -rf $b/backup.$c
    while [  $c -gt 1 ]; do
            let d=$c
            let c=c-1
            mv $b/backup.$c $b/backup.$d
    done
    let d=d-1
    let c=c-1
    cd $b/backup.$c && find . -print | cpio -dpl ../backup.$d
    
    # Den eigentlichen Backup-Prozess starten
    /usr/bin/rsync -aE --delete --exclude=.Spotlight-V100 $a $b/backup.0/
    
    # Datum aufzeichnen (Ende)
    /bin/echo "Backup beendet um:" >> $b/backup.log
    /bin/date >> $b/backup.log
    /bin/echo "--------------------------------------" >> $b/backup.log
    
    # Datum von backup.0 in eine Datei sichern
    /bin/date > $b/backup.0/datum
    
    
    Wie man sieht (oder auch nicht ;)) ist das aktuellste Backup stets das vollständige, alle anderen enthalten eigentlich nur die "Differenzen" zu ersterem, der Rest sind nur Verknüfungen* - daher ist die Geschichte überraschend nicht-speicherintensiv.

    Das Script macht so gut wie alles von alleine, man muss lediglich Quelle, Ziel und gewünschte Anzahl Versionen (2 - unendlich) angeben. Sogar die Versions-Verzeichnisse auf dem Ziel werden automatisch angelegt, egal wie viele es sind.

    Ich hoffe, dass das sonst noch jemand brauchen kann, ich selber bin damit sehr zufrieden, es hat einfach den Vorteil, dass man gelöschte (und v.a. überschriebene) Dateien weiter zurück rekonstruieren kann und vergleichsweise wenig Speicherplatz braucht (also volles Backup + alle Änderungen).


    P.S.: Einige wichtige Teile habe ich "ausgeliehen", ich habe einfach ein Gesamtkonzept daraus gemacht und die WHILE-Routinen etc. eingebaut, damit es schön benutzerfreundlich wird :). Auf eine detaillierte Erklärung verzichte ich an dieser Stelle, da das Skript ungleich komplexer ausgefallen ist, als die anderen.

    * Die verwendeten Verknüpfungen sind keine Aliase, sondern sog. Hardlinks. Diese sind etwas vollkommen anderes als Aliase, wie man sie vom Finder her kennt. Wichtig ist nur, dass man weiss, dass sie im Finder nicht als Verknüpfungen dargestellt werden, also nicht verwirren lassen, wenn es so aussieht, als hätte die Sache mit den Verknüfungen nicht geklappt!

    Kleines Update
    Das Script sichert jetzt das Datum des aktuellen inkrementellen Backups in eine Datei, sodass man leichter nachvollziehen kann, wann welche Version erstellt wurde.

    Update (23.09.2006)
    Das Script ist ab sofort mit PPC- und Intel-Macs vollständig kompatibel, da rsync von Apple verwendet wird.
     
    Zuletzt bearbeitet: 30.12.2006
  8. sheep

    sheep MacUser Mitglied

    Beiträge:
    1.223
    Zustimmungen:
    24
    MacUser seit:
    21.03.2005
    Update: Intel-Macs

    Sämtliche Scripts sind nun vollständig mit PPC- und Intel-Macs kompatibel.
     
    Zuletzt bearbeitet: 23.09.2006
Die Seite wird geladen...
Ähnliche Themen - Automatische Backups Syncs
  1. stella777
    Antworten:
    1
    Aufrufe:
    180
    MacFangio
    26.07.2016
  2. MrNobody4327891
    Antworten:
    8
    Aufrufe:
    274
    Olivetti
    19.07.2016
  3. Kater Louis
    Antworten:
    0
    Aufrufe:
    78
    Kater Louis
    15.07.2016
  4. PaulMering
    Antworten:
    6
    Aufrufe:
    339
    lostreality
    23.11.2015
  5. misux
    Antworten:
    4
    Aufrufe:
    306
    misux
    22.05.2010