![](https://seccdn.libravatar.org/avatar/3ce160b3500131402c3a29bfb24732cc.jpg?s=120&d=mm&r=g)
Hallo Fabian, -------- Original-Nachricht --------
Datum: Sun, 29 Mar 2009 14:25:26 +0200 Von: Fabian Ohde <fab.i.an@freenet.de> An: "opensuse-de@opensuse.org" <opensuse-de@opensuse.org> Betreff: Re: backup rsync
Thomas Michalka schrieb:
Hallo Fabian,
-------- Original-Nachricht --------
Datum: Sun, 29 Mar 2009 12:22:35 +0200 Von: Fabian Ohde <fab.i.an@freenet.de> An: "opensuse-de@opensuse.org" <opensuse-de@opensuse.org> Betreff: backup rsync
ich möchte mein /home/fabian mit rsync auf eine externe (/media/disk/BACKUP/home/fabian) sichern.
$> rsync -ahhHvWx --stats \ --log-file="2009-03-29---daily.01/home /fabian__2009-03-29__daily.log" \ --link-dest="$PWD/2009-03-11---daily.02/home/fabian" \ /home/fabian/ 2009-03-29---daily.01/home/fabian
Nach einer Sicherung in *.daily.01 kann man alle Verzeichnisse *.daily.<Nr.> so umbenennen, daß jedes um eine Stufe hochnummeriert ist, so daß Du mit mkdir -p *.daily.01/home/fabian neu erzeugen kannst. Warum das Ganze? Der Clou daran ist, das nur das erste Backup überhaupt alle Daten physisch auf die Platte schreibt. Bei allen späteren Backups werden für unveränderte Dateien Hardlinks angelegt, was sowohl enorm viel Platz als auch Backup-Zeit spart.
also wenn ich das richtig verstanden habe macht er mir inkrementelle Backups?!
Eigentlich differentielle Backups in Bezug auf die Dateien des Vergleichsverzeichnisses, das bei --link-dest angegeben ist. Es gibt auch --compare-dest, das genauso wie --link-dest vergleicht und sichert, nur für die gegenüber dem Vergleichsverzeichnis unveränderten Dateien keine Hardlinks im Backup-Zielverzeichnis anlegt. Übrigens ist es wegen der Hardlinks essentiell, daß sich beide, Vergleichsverzeichnis und Zielverzeichnis im selben Dateisystem befinden. Wenn das Vergleichsverzeichnis leer ist oder nicht existiert, dann sichert rsync alle Dateien des Quellverzeichnisses physisch im Zielverzeichnis. Wenn man so will ist hierbei die Differenz zwischen Quell- und Vergleichsverzeichnis halt das komplette Quellverzeichnis, was automatisch einer Vollsicherung entspricht.
Und mit mkdir -p *.daily.01/home/fabian + rsync erstellt er mir jeweils einen neuen order mit dem inkrementelle Backup?!
Ja, aber statt "+" korrekt ein ";" oder "&&" eintippen. Ersteres trennt Befehle in der Bash voneinander, so daß sie bedingungslos nacheinander ausgeführt werden. Das zweite ist eine logische UND-Verknüpfung, die so wirkt: geht das erste Kommando (mkdir) gut (Rückgabewert 0, Wahrheitswert true), dann braucht die Bash auch das Ergebnis des zweiten Kommandos (rsync) für die Auswertung des Ergebnisses der logischen Verknüpfung, weil bei true && x je nach Wahrheitswert von x immer noch true oder false als Endergebnis herauskommen können. Also wird rsync ausgeführt. Geht dagegen mkdir schief, (Rückgabewert !=0, Wahrheitswert false), dann steht das Ergebnis der logischen UND-Verknüpfung schon fest, und die Bash führt rsync gar nicht mehr aus. Am besten sichest Du immer in eine bestimmte Verzeichnishierarchie. Beispiel: B_BASE="/backup" B_HOST=<FQHN> # Beispielsweise: myhost.mydomain.mytop B_RYTHM="daily" DATE=$(date -I) # Erzeugt z.B. heute 2009-03-30 # Zielverzeichnis für diverse Backups *genau heute* B_DEST=$B_BASE/$B_HOST/$B_RYTHM/$DATE---$B_RYTHM.latest # Zielverzeichnishierarchie ("-p"!) anlegen (für jedes Backup neu!) ! (test -d $B_DEST) && mkdir -p $B_DEST/home/fabian Erzeugt wird also die Hierarchie: /backup/myhost.mydomain.mytop/daily/2009-03-30---daily.latest/home/fabian
kann ich das mkdir -p *.daily.01/home/fabian nur in einem skript benutzen oder gleich mit eingeben.
Kannst Du, wenn Du weißt, daß es das Verzeichnis noch nicht gibt, so eingeben (denk Dir für die Variable $B_DEST einfach die obigen Werte bzw. die erzeugte Hierarchie eingesetzt): $> mkdir -p $B_DEST/home/fabian && rsync <optionen> <quelle> <ziel> Die Aufrufparameter von rsync spare ich mir hier jetzt. Kannst Du ja oben nachsehen. Nach dem Backup solltest Du angefangen mit der höchstnummerierten Backup- Generation (diese löschen; rm -Rf <Gen.28>) alle Generationenverzeichnisse umbenennen (Gen.27 nach Gen.28, Gen.26 nach Gen.27; mv <Gen.27> <Gen.28>), bis es kein Gen.01 (ist jetzt Gen.02) mehr gibt. Dann benennst Du das jüngste Backup-Verzeichnis um mit mv <Gen>.latest <Gen.01>. Dann gibt es kein "Letztes" mehr, so daß dies vor dem nächsten Backup erzeugt werden muß (siehe Hinweis oben im Bash-Kommentar).
Also gesichert hab ich noch nichts. Ich wollte jetzt gleichmal mit rsync -a anfangen.
Ein gutgemeinter Rat: überhaste nichts, denn schnell ist das Quell- mit dem Zielverzeichnis vertauscht in der Befehlszeile und Deine Daten sind Geschichte (z.B. mit --delete); lies Dir die manpage von rsync gut durch; vielleicht suchst Du die von mir oben benutzten Optionen einmal und liest Dir deren Wirkung besonders gut durch.
Gedacht habe ich so das er jeweils beim herunterfahren das backup mache....
Sicher keine schlechte Idee, falls Du das auch öfters tust und es nicht wichtig ist, wie lange der Rechner dann noch angeschaltet ist. Bei mir dauert ein Voll-Backup von ca. 150 GByte etwas länger als sechs Stunden. Die folgenden differentiellen Sicherungen mit Anlage der Hardlinks ca. 20 Minuten bei täglich einmaligem Sichern. Du könntest dann ein KILL-Skript nach Vorbildern in /etc/init.d/ schreiben, das das Backup automatisch beim Herunterfahren durchführt. Das muß aber rechtzeitig sein, damit z.B. /home noch gemountet ist und erst ausgehängt wird, wenn das Backup und die Rotation der Generationen vollzogen sind. Gruß, Tom -- Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger01 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org