Inkrementelles Backup erstellen! Komme nicht mehr weiter.

MAVERICK_

MAVERICK_

Aktives Mitglied
Thread Starter
Dabei seit
05.05.2005
Beiträge
1.262
Reaktionspunkte
14
Hallo!

Es gibt ja den Backup-Thread von "sheap".

https://www.macuser.de/threads/automatische-backups-und-syncs-unter-os-x.125410/#post-1816962

Ich möchte ein inkrementelles Backup machen. Es steht im Thread nicht, wie man hier vorgehen muss?! Ist die Vorgehensweise dieselbe, wie wenn man ein nicht-inkrementelles Backup von seinem gesamten System macht? Muss man also nur den Code austauschen? (also auch zwei TextEdit-Dateien erstellen und den Terminal zweimal aufrufen). Jedenfalls habe ich das probiert, klappt aber nicht?!

Oder muss ich den 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

einfach in den Terminal eingeben?

Danke!

PS: Ich bekomme immer diese Fehlermeldung:

Last login: Mon Dec 18 11:08:26 on ttyp1
Welcome to Darwin!
0017f2f20825:~ Christoph$ cd Desktop
0017f2f20825:~/Desktop Christoph$ chmod +x backup_system
0017f2f20825:~/Desktop Christoph$ sudo mv backup_excludes.txt /
Password:
0017f2f20825:~/Desktop Christoph$ sudo ./backup_system
sudo: unable to execute ./backup_system: No such file or directory
0017f2f20825:~/Desktop Christoph$
 
Zuletzt bearbeitet von einem Moderator:
Nichts für ungut, aber wenn man keinen blassen Schimmer hat, was man da überhaupt macht, dann sollte man ihmo die Finger davon lassen.
Ist jetzt nicht gegen Dich persönlich gemünzt, ich möchte Dich nur vor Schlimmeren retten.
Das ist ein Bash Skript. Die Zeilen gibst Du also nicht einzeln ins Terminal ein.
Außerdem musst Du, wie es im Skript ja auch steht, die Variablen auf Deine Verhältnisse anpassen.

Gruß
 
Der Thread ist ja für Zitat: "blutige Anfänger" geschrieben. Mir ist schon klar, dass man das nicht in den Terminal eingibt. Aber wenn man so vorgeht, wie es beschrieben ist, wie man ein Backup des gesamten Systems macht, dann funktioniert es nicht. Das normale Backup funktioniert, aber das inkrementelle nicht.
 
Ah, jetzt verstehen ich. Man sollte vorher lesen. Du musst der Datei, in der das Skript steht, die Endung .sh geben.
Aufruf dann mit "./backup_sytsem.sh" oder "sh backup_system.sh".
Aber, wie gesagt, erst für Deine Verhältnisse anpassen.
 
Warum benutzt Du nicht lieber ein entsprechendes Tool wie ccc oder SuperDuper?
Ist imho doch Anwenderfreundlicher.

Gruß
 
Hhhm.

Sheep schreibt:

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.

Du meinst also, doch eine Endung verwenden?

Wenn es nicht klappen sollte, dann werde ich SupderDuper! installieren.

Noch eine Frage: Wenn ich das System dann das zweite Mal backupen will, muss ich dann wieder beide Dateien erstellen oder nur mehr eine? Oder nur mehr den Befehl in den Terminal eingeben? Davon steht im Tutorial leider nichts.
 
Wenn Du die Datei mit "sh backup_system" aufrufst, müsstest Du die Endung auch weg lassen können. Da bin ich mir aber nicht ganz sicher. Meine Zeiten, in denen ich mal das eine oder andere Bash-Skript geschrieben habe, sind schon länger her.

Wenn Du das Skript einmal angelegt hast, dann kannst Du es jederzeit wieder verwenden. Wenn ich das Posting richtig verstanden habe, dann sollte immer nur die Änderungen zum vorherigen Backup gespeichert werden. Ups, umgekehrt!
 
Das ist echt eigenartig. Ich habe letzte Woche probiert, heute wieder ein paar Mal. Manchmal funktioniert es, manchmal nicht?! Und glaube mir, ich habe immer alles so eingegeben, wie angeführt.

Nun funktioniert es gerade. Im Terminal kamen bisher diese Fehlermeldungen:
Code:
Last login: Mon Dec 18 11:53:11 on ttyp1
Welcome to Darwin!
0017f2f20825:~ Christoph$ cd Desktop
0017f2f20825:~/Desktop Christoph$ chmod +x backup_system
0017f2f20825:~/Desktop Christoph$ sudo mv backup_excludes.txt /
Password:
0017f2f20825:~/Desktop Christoph$ sudo ./backup_system
rsync: readlink "//dev/fd/3" failed: Bad file descriptor (9)
rsync: opendir "//dev/fd/4" failed: Not a directory (20)
rsync: opendir "//dev/fd/7" failed: Not a directory (20)
rsync: opendir "//dev/fd/8" failed: Not a directory (20)
IO error encountered - skipping file deletion

Kannst du dir darauf einen Reim machen? Auf der externen Platte werden jedenfalls die Verzeichnisse brav erstellt...
 
Du versuchst damit Deine komplette OS X Installation zu sichern?

In "/dev/" liegen keine Dateien im eigentlichen Sinne, sondern darüber findet der Hardwarezugriff statt. Das ist LInux/Unix typisch. Deswegen die Fehlermeldung.
Das komplette Verzeichnis "/dev/" brauchst Du aber eh nicht mit zu sichern.

Gruß

EDIT: Wenn ich mich nicht ganz irre, dann steht "fd" für Floppy Drive.
 
Ja genau! Ich möchte mein komplettes OSX sichern. Ich habe im Skript stehen:

Code:
#!/bin/sh

# INKREMENTELLLE BACKUPS

# Die folgenden Variablen müssen vom Benutzer angepasst werden

# Zu sicherndes Verzeichnis (z.B. /Users/):
a="/"
# Verzeichnis bzw. Volume, in dem die Backups gespeicher werden sollen (z.B. /Volumes/Backup):
b="/Volumes/Backup_1"

# Anzahl zu sichernde Versionen (z.B. 5; das Minimum ist 2!):
c=15

Deine Antwort bezieht sich also auf diesen Eintrag:

Code:
# Zu sicherndes Verzeichnis (z.B. /Users/):
a="/"

Was würdest du hier eingeben?

Übrigens danke, dass du dir die Zeit nimmst, mir zu helfen. ;)

EDIT: Ich habe den iPod angeschlossen. Vielleicht kommt deswegen die Fehlermeldung?
 
der Fehler passiert vermutlich beim Backup-Verzeichnisse rotieren. Dabei wird geloescht. Wenn nichts zum loeschen da ist wird dieser Schritt uebersprungen (IO error encountered - skipping file deletion)

Du solltest dich mal grundsaetzlich mit scripts befassen bevor du einfach was abtippst und dich dann ueber Fehlermeldungen wunderst.
 
Du solltest dich mal grundsaetzlich mit scripts befassen bevor du einfach was abtippst und dich dann ueber Fehlermeldungen wunderst.

Du hast natürlich recht, es ist aber oft eine Frage der Zeit.

Wie es scheint, klappt es. Wenn du schreibst

der Fehler passiert vermutlich beim Backup-Verzeichnisse rotieren. Dabei wird geloescht. Wenn nichts zum loeschen da ist wird dieser Schritt uebersprungen (IO error encountered - skipping file deletion)

dann müsste es beim zweiten Mal sichern nicht mehr zur Fehlermeldung kommen.
 
Ob das Skript überhaupt geeignet ist, ein vollständiges Backup zu erstellen, weiß ich nicht.
Für einzelne Verzeichnisse oder den Home Ordner ist es natürlich sehr vorteilhaft. Denn man kann ja x (in Deinem Fall 15) Sicherungen zurück gehen und jede einzelne wiederherstellen.

Aber jetzt zu Deinem Skript.
Ja, wenn Du alles sichern möchtest, ist "/" schon richtig.
Du solltest allerdings in der "ackup_excludes.txt" dann "/dev" mit angeben. Ich kenne die Syntax der Datei jetzt aber nicht genau. Außerdem verstehe ich gerade eh nicht, wo diese Datei im Skript überhaupt benötigt wird. Im Skript wird doch nur die Spotlight Datei ausgenommen. Vielleicht solltest Du Dich mal mit sheep in Verbindung setzen.

Dann sicherst Du in "/Volumes/Backup_1". Und Du hast auch einen externen Datenträger, der "Backup_1" heißt? Sonst sicherst Du das Backup nämlich auf der Platte, auf der auch OS X drauf ist. Und das macht irgendwie keinen Sinn.

Gruß
 
@lundehundt
Da Du Dich ja anscheinend besser (als ich) mit so etwas auskennst, macht es überhaupt Sinn, das /dev mit zu sichern? Normalerweise doch nicht. Oder?
 
Ich habe mir gerade mal angeschaut, was SuperDuper da so macht.
Ich würde jetzt einfach mal behaupten, vergiss es!
Du musst da recht viel "excluden". Logisch, alleine schon "/Volume/*" darfst Du ja nicht mit sichern.
Und dann gibt es da noch eine menge Dateien mehr, die Du nicht sichern musst, bzw. darfst.

Ich persönlich habe da lieber die paar Euro für SuperDuper bezahlt. Damit klone ich mein komplettes System auf eine kleine externe 2,5" Platte. So kann ich im Notfall direkt davon booten.

Gruß
 
In einem anderen Thread habe ich das gefunden:

Code:
Deine Backups würden mit grosser Wahrscheinlichkeit nach einiger Zeit auch stark anwachsen, wenn du das so machst. Die Fehler kannst du im Übrigen ignorieren, Geräte (/dev/*) können - und sollen auch nicht - gesichert werden.

https://www.macuser.de/forum/showthread.php?t=125413&page=29

Folgendes: Wie soll ich jetzt vorgehen? Ich habe eine externe Platte (Backup_1 und Backup_2 Partionen). Soll ich das gesamte System inkrementell sichern oder nur das Home-Verzeichnis?

Ich hätte einfach gerne eine Sicherung des gesamten Systems, mit allen Programmen usw. Macht man sowas nie inkrementell?

Warum einmal die wichtigen Daten inkrementell sichern, das gesamte System aber nicht?

EDIT:

Habe das gefunden:

Das empfiehlt sich als Backup im Sinne der Datensicherung nicht, da man das System bei Bedarf bequem neu aufspielen kann.

Schutzbedürftig und damit eines Backups würdig sind ausschließlich die unersetzlichen Daten des Home-Verzeichnisses.

Daher ist es ausreichend, mit SuperDuper! ein startfähiges System-Backup, was man nach jedem System-Update erneuern kann, anzulegen, um bei Bedarf den Rechner extern starten zu können - in erster Linie eben für diesen Notfall.
 
Zuletzt bearbeitet:
Ich halte es fuer unsinning, das System zu sichern. Das System bleibt bis auf die Kernel Extensions von Drittanbietern (also Treiber die du zusaetzlich installierst) weitgehend so wie es auf der System DVD geliefert wird. Es macht also bestenfalls Sinn, den Rechner nach der Installation des Systems und aller Programme einmal voll zu sichern.

Alle Voreinstellungen sind in deinem Home Verzeichnis gesichert. Dort sind auch deine Dateien per default gespeichert. Es macht also Sinn, vom Home Verzeichnis ein inkrementelles Backup zu machen das nur die taeglichen Veraenderungen am Home Verzeichnis sichert. Das gilt analog natuerlich fuer alle anderen Dateien von dir, die du ausserhalb deines Home Verzeichnisses speicherst (Musik oder Photos liegen gern mal ausserhalb des Home Verzeichnisses auf einer anderen Platte)
 
Ich finde es praktisch immer eine 1:1 Kopie der internen Festplatte zu haben. Fällt meine Festplatte so mal aus, dann kann ich direkt auf der externen Weiterarbeiten, ohne irgendwas installieren zu müssen o.Ä. Beim Abgleich mit SuperDuper wird ja eh nur das rübekopiert, was geändert wurde, was somit nicht so lange dauert.
 
@Maverick1977
Zu erst einmal solltest Du Dir wirklich im klaren sein, was Du mit dem Backup überhaupt erreichen möchtest.
Das Skript oben finde ich z.B. perfekt für irgendwelche Projekte. Man hat einen oder mehrere Ordner, in denen Daten drin liegen, die man bearbeitet. Sichert man sich jetzt mit dem Skript täglich (oder mehrmals am Tag) diese Ordner, kann man jederzeit x Sicherungen zurück gehen und den Zustand wieder herstellen.
Für ein Systembackup halte ich das aber für völlig übertrieben.
Außer es ist direkt im OS mit eingebaut, wie es bei Leopard der Fall sein wird. :D

Wie gesagt, ich sichere mein System mit SuperDuper alle zwei Wochen oder so. So habe ich einerseits alle Daten gesichert und kann andererseits bei einem Defekt der internen HDD nahtlos weiter arbeiten. Bzw. bei einem fehlerhaften OS X den Klon einfach zurück spielen, ohne erst OS X neu aufspielen zu müssen.

Aber, da gebe ich lundehundt recht, reicht ein Backup seines Home-Verzeichnisses normalerweise aus, um alles wichtige zu sichern.

Deine Art der Sicherung des gesamten System macht eigentlich so auch keinen Sinn. Denn was machst Du, wenn Dein OS X mal nicht mehr hochfährt? Anders, als ich es dann mit meinem bootfähigen SD Klon mache, kannst Du dann ja nicht von dem Backup booten und das System wieder herstellen. Du musst also in jedem Fall OS X neu installieren.

Gruß
 
Danke! Dein Beitrag war wirklich sehr informativ und mir ist es jetzt klar(er) geworden.

Das Skript von Sheep funktioniert einmal, dann wieder nicht. Es ist mir jetzt zu blöd geworden, ich habe mir SuperDuper! gekauft (28 Euro).

Die externe Platte habe ich partitioniert:

Partition 1: Backup des gesamten Systems (zum Booten, jede Woche neu)
Partition 2: Backup des "Home-Verzeichnisses" (jeden Tag neu)

Danke,
Christoph.
 
Zurück
Oben Unten