rsync löscht alle Backup-Daten falls Quelle leer...?
![](https://seccdn.libravatar.org/avatar/0bb987f69642e7fc059b709d062dca24.jpg?s=120&d=mm&r=g)
Hallo, ich mache ein regelmäßiges Backup meiner Daten, indem ich Sie mit Hilfe von rsync über ein Script automatisch mit einem anderen Rechner abgleiche (inklusive '--delete'-Schalter). Nur habe ich folgendes Problem: Sollte aus irgendeinem Grund die Partition auf dem die Original-Daten liegen nicht mehr gemountet sein, dann wird rsync doch hingehen und auch die Backup-Daten löschen. Oder?? Kann ich das irgendwie verhindern?? Gruß Klaus -- 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
![](https://seccdn.libravatar.org/avatar/1cf53bbe68141b5c35a0b6ed309cf54b.jpg?s=120&d=mm&r=g)
Klaus Becker, Montag 31 Mai 2010:
Nur habe ich folgendes Problem: Sollte aus irgendeinem Grund die Partition auf dem die Original-Daten liegen nicht mehr gemountet sein, dann wird rsync doch hingehen und auch die Backup-Daten löschen. Oder??
Klar.
Kann ich das irgendwie verhindern??
Du mußt das vorher irgendwie abfangen: if mount | grep mountpoint > /dev/null; then rsync ... else echo "nix rsync" fi Das heißt natürlich noch lange nicht, daß das gewünschte Dateisystem gemountet ist. Es heißt nur, daß irgend eines gemountet ist. Du könntest auch auf die Existenz einer bestimmten Datei prüfen, die auf diesem Dateisystem liegt. Oder die md5sum dieser Datei berechnen und gucken, ob sie paßt. Gibt viele Möglichkeiten... -- Andre Tann -- 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
![](https://seccdn.libravatar.org/avatar/e2951fce8869bfe3ea27a01e0b73b3b8.jpg?s=120&d=mm&r=g)
Am 31.05.2010 17:11, schrieb Klaus Becker:
Kann ich das irgendwie verhindern??
Per script vorab abfragen ob die Quelle wie erwartet und notwendig erreichbar ist. Ich prüfe vorab immer ab ob eine Testdatei noch gefunden wird. Ist die Datei da wird gesynct. Allerdings hilft dir das nicht wenn die Daten in der Quelle gelöscht wurden. Dir hilft da nur eine versionsweise Sicherung in z.B. Tages oder Wochenordner. Je nach Menge der Daten kommt da was zusammen. Alternativ hilft dir ggf. https://wiki.uugrn.org/Snapshots_per_rsync aber ab einer gewissen Menge Links kann dir dein Filesystem Probleme machen. Was mittlerweile im Kommen ist ist deduplizierung. z.B. http://www.opendedup.org/ Gruß Ralf Prengel Manager Customer Care Comline AG Hauert 8 D-44227 Dortmund/Germany Fon +49 231 97575 904 Fax +49 231 97575 257 Mobil +49 151 10831 157 EMail Ralf.Prengel@comline.de www.comline.de Vorstand Stephan Schilling, Erwin Leonhardi Aufsichtsrat Dr. Franz Schoser (Vorsitzender) HR Dortmund B 14570 USt.-ID-Nr. DE 124727422 Für die Erstellung unserer Dokumente benutzen wir die Produkte aus dem Microsoft Office 2007 Paket. Sollte sich ein Anhang in der Mail befinden, der mit einer älteren Office Version nicht geöffnet werden kann, installieren Sie bitte das Compatibility Pack für Office 2007. http://www.microsoft.com/downloads/details.aspx?FamilyID=941b3470-3ae9-4aee-... -- 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
![](https://seccdn.libravatar.org/avatar/558efd968e344ca3b3b1ac7bb99c6792.jpg?s=120&d=mm&r=g)
Hallo Klaus Am Montag, 31. Mai 2010 17:11:21 schrieb Klaus Becker:
ich mache ein regelmäßiges Backup meiner Daten, indem ich Sie mit Hilfe von rsync über ein Script automatisch mit einem anderen Rechner abgleiche (inklusive '--delete'-Schalter).
Nur habe ich folgendes Problem: Sollte aus irgendeinem Grund die Partition auf dem die Original-Daten liegen nicht mehr gemountet sein, dann wird rsync doch hingehen und auch die Backup-Daten löschen. Oder??
Kann ich das irgendwie verhindern??
Soweit ich weis mekert rsync wenn man einen Pfad angiebt der in diesem Moment nicht existiert. Aber ich würde es mit einer if-Schleife lösen. #!/bin/bash a=`mount | grep 'sda3'` if [ ! "${a}" ] ; than echo "Partition ist nicht gemountet" exit else rsync und so weiter fi So stelle ich mir das vom Grundgerüst her vor. Details musst du selber ausarbeiten. Viele Grüße Peter -- __ __ _____ _ __ __ _ _ ___ ____ _____ _ ____ | \/ | ___ |___ // | | \/ | __ _(_) / |/ _ \ _| ___|___ /_/ | ___| | |\/| |/ _ \ |_ \| | | |\/| |/ _` | | | | (_) (_)___ \ |_ (_) |___ \ | | | | (_) | ___) | |_ | | | | (_| | | | |\__, |_ ___) |__) || |___) | |_| |_|\___/ |____/|_(_) |_| |_|\__,_|_| |_| /_/(_)____/____(_)_|____/ ____ _____ ____ _____ ____ ___ _ ___ / ___| ____/ ___|_ _| |___ \ / _ \/ |/ _ \ | | | _| \___ \ | | __) | | | | | | | | | |___| |___ ___) || | / __/| |_| | | |_| | \____|_____|____/ |_| |_____|\___/|_|\___/ -- 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
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Mon, 31 Mai 2010, Peter Steffinger schrieb:
Aber ich würde es mit einer if-Schleife lösen.
'if .. fi' ist keine Schleife. Sondern eine Bedingung.
#!/bin/bash
a=`mount | grep 'sda3'` if [ ! "${a}" ] ; than echo "Partition ist nicht gemountet" exit else rsync und so weiter fi
Sehr schlechte Lösung. Mach das mal im Runlevel S nachdem du die Quell- und Zielpartitionen dazugemounted hast. Besser: ==== if grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei; then : rsync und so weiter else echo "Partition nicht gemounted">&2; exit 1; fi ==== HTH, -dnh -- I love deadlines. I like the whooshing sound they make as they fly by. -- Douglas Adams -- 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
![](https://seccdn.libravatar.org/avatar/558efd968e344ca3b3b1ac7bb99c6792.jpg?s=120&d=mm&r=g)
Hallo David Am Montag, 31. Mai 2010 23:22:12 schrieb David Haller:
'if .. fi' ist keine Schleife. Sondern eine Bedingung. Entschuldige :-) Habe in der Eile die Begrifflichkeiten etwas vertauscht.
#!/bin/bash
a=`mount | grep 'sda3'` if [ ! "${a}" ] ; than echo "Partition ist nicht gemountet" exit else rsync und so weiter fi
Sehr schlechte Lösung. Mach das mal im Runlevel S nachdem du die Quell- und Zielpartitionen dazugemounted hast. Besser:
==== if grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei; then : rsync und so weiter else echo "Partition nicht gemounted">&2; exit 1; fi ====
Deine Konstruktion verstehe ich aber auch nicht so ganz. Kannst du mir kurz aufschlüsseln, was da in Einzelschritten passiert? Viele Grüße Peter -- ____ _ _ _ ___ ___ _ _ _ ____ _____ | _ \(_) / | | |_ _ _ __ / _ \ / _ \ _/ | || | _|___ \___ | | | | | | | | _ | | | | | '_ \ | | | | | | (_) | || |(_) __) | / / | |_| | | | |_ | |_| | |_| | | | | | |_| | |_| |_| |__ _| / __/ / / |____/|_| |_(_) \___/ \__,_|_| |_| \___/ \___/(_)_| |_|(_)_____/_/ ____ _____ ____ _____ ____ ___ _ ___ / ___| ____/ ___|_ _| |___ \ / _ \/ |/ _ \ | | | _| \___ \ | | __) | | | | | | | | | |___| |___ ___) || | / __/| |_| | | |_| | \____|_____|____/ |_| |_____|\___/|_|\___/ -- 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
![](https://seccdn.libravatar.org/avatar/ec75ef7cbea71bca17ad2fc6e2d8abe1.jpg?s=120&d=mm&r=g)
Hallo Peter, Peter Steffinger schrieb:
Hallo David
Sehr schlechte Lösung. Mach das mal im Runlevel S nachdem du die Quell- und Zielpartitionen dazugemounted hast. Besser:
==== if grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei; then : rsync und so weiter else echo "Partition nicht gemounted">&2; exit 1; fi ====
Deine Konstruktion verstehe ich aber auch nicht so ganz. Kannst du mir kurz aufschlüsseln, was da in Einzelschritten passiert?
was ist daran genau schwierig? Es wäre für uns sicher hilfreich, wenn Du schreiben würdest was Du -genau- nicht verstehst... Nimm doch die einzelnen Teile des Beispiels und teste sie aus. grep 'mountpunkt' /proc/mounts .... test -e /mountpunkt/datei; Wobei "/mountpunkt/datei" eine Datei auf Deinem Filessystem sein muß, die existiert. -- Gruß Axel ------------------------------ => einen Server härten? google mal nach Stahl härten oder was meinst Du mit härten? Aus: http://www.administrator.de/index.php?content=69906 ------------------------------ http://www.tty1.net/smart-questions_de.html -- 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
![](https://seccdn.libravatar.org/avatar/558efd968e344ca3b3b1ac7bb99c6792.jpg?s=120&d=mm&r=g)
Hall Axel Am Dienstag, 1. Juni 2010 08:16:15 schrieb Axel Birndt:
was ist daran genau schwierig? Es wäre für uns sicher hilfreich, wenn Du schreiben würdest was Du -genau- nicht verstehst...
Nimm doch die einzelnen Teile des Beispiels und teste sie aus.
grep 'mountpunkt' /proc/mounts
Ich bin die if-Abfrage so gewohnt: if [ ] ; then else fi Deshalb hat mich dieser Teil etwas verwirrt: grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei Diesen Teil verstehe Ich noch: test -e /mountpunkt/datei Aber diesen nicht: grep 'mountpunkt' /proc/mounts && Wenn es dir zu mühsam ist mir paar Grundlagen zu geben, dann kannst du mir auch ruhig ein RTFM verpassen. Ich wäre dir aber dankbar, wenn ich jetzt nicht 10 Stunden über den Aufbau deiner if-Abfrage googlen müsste. Bei mir hakt es nämlich gerade eben nur an einer klitzkleinen Grundlageninfo. Vielen Dank Viele Grüße Peter -- ____ _ _ _ ____ ___ ___ __ _____ ___ | _ \(_) / | | |_ _ _ __ |___ \ / _ \ _ / _ \ / /_ _|___ // _ \ | | | | | | | _ | | | | | '_ \ __) | | | (_) | | | '_ (_) |_ \ (_) | | |_| | | | |_ | |_| | |_| | | | | / __/| |_| |_| |_| | (_) | ___) \__, | |____/|_| |_(_) \___/ \__,_|_| |_| |_____|\___/(_)\___/ \___(_)____/ /_/ ____ _____ ____ _____ ____ ___ _ ___ / ___| ____/ ___|_ _| |___ \ / _ \/ |/ _ \ | | | _| \___ \ | | __) | | | | | | | | | |___| |___ ___) || | / __/| |_| | | |_| | \____|_____|____/ |_| |_____|\___/|_|\___/ -- 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
![](https://seccdn.libravatar.org/avatar/38139ba5050a5b9e85015967e696df39.jpg?s=120&d=mm&r=g)
Am Dienstag 01 Juni 2010 20:13 schrieb Peter Steffinger: Hallo Peter,
Deshalb hat mich dieser Teil etwas verwirrt: grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei
Diesen Teil verstehe Ich noch: test -e /mountpunkt/datei
Aber diesen nicht: grep 'mountpunkt' /proc/mounts &&
Befehl1 && Befehl2 Befehl1 wird ausgeführt. Falls Befehl1 erfolgreich war (kein returncode ungleich 0) wird Befehl2 ausgeführt. lg Ralf -- Antworten bitte nur in die Mailingliste! PMs bitte an: listpm (@) arndt-de (.) eu -- 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
![](https://seccdn.libravatar.org/avatar/558efd968e344ca3b3b1ac7bb99c6792.jpg?s=120&d=mm&r=g)
Hallo Ralf Am Dienstag, 1. Juni 2010 20:58:35 schrieb Ralf Arndt:
Befehl1 && Befehl2
Befehl1 wird ausgeführt. Falls Befehl1 erfolgreich war (kein returncode ungleich 0) wird Befehl2 ausgeführt.
Jetzt machts aha bei mir. Gibt Befehl was anderes als 0 zurück und der zweite Befehl wird demnach auch nicht ausgeführt, dann ist die Bedingnung nicht erfüllt , womit else ... ausgeführt wird. Ich weiß :-) Ich sollte doch mal wieder ein Buch in die Hand nehmen und das eine oder andere vertiefen oder auffrischen:-) Viele Grüße Peter -- ____ _ _ _ ____ _ _ ____ ____ _____ | _ \(_) / | | |_ _ _ __ |___ \/ |_/ |___ \ _|___ \|___ / | | | | | | | _ | | | | | '_ \ __) | (_) | __) (_) __) | |_ \ | |_| | | | |_ | |_| | |_| | | | | / __/| |_| |/ __/ _ / __/ ___) | |____/|_| |_(_) \___/ \__,_|_| |_| |_____|_(_)_|_____(_)_____|____/ ____ _____ ____ _____ ____ ___ _ ___ / ___| ____/ ___|_ _| |___ \ / _ \/ |/ _ \ | | | _| \___ \ | | __) | | | | | | | | | |___| |___ ___) || | / __/| |_| | | |_| | \____|_____|____/ |_| |_____|\___/|_|\___/ -- 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
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Die, 01 Jun 2010, Peter Steffinger schrieb:
Ich bin die if-Abfrage so gewohnt:
if [ ] ; then else fi
Schon flasch. Die [] haben _NICHTS_ mit dem 'if' zu tun! ==== $ help if if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi The if COMMANDS are executed. If the exit status is zero, then the then COMMANDS are executed. [..] ==== Wobei hier die [] die optionalen Teile umgeben.
Deshalb hat mich dieser Teil etwas verwirrt: grep 'mountpunkt' /proc/mounts && test -e /mountpunkt/datei
Was ist damit? ==== man bash ==== The control operators && and || denote AND lists and OR lists, respectively. An AND list has the form command && command2 command2 is executed if, and only if, command returns an exit status of zero. ====
Aber diesen nicht: grep 'mountpunkt' /proc/mounts &&
man grep
Wenn es dir zu mühsam ist mir paar Grundlagen zu geben, dann kannst du mir auch ruhig ein RTFM verpassen. Ich wäre dir aber dankbar, wenn ich jetzt nicht 10 Stunden über den Aufbau deiner if-Abfrage googlen müsste. Bei mir hakt es nämlich gerade eben nur an einer klitzkleinen Grundlageninfo.
Lies in man bash den Abschnitt 'SHELL GRAMMAR'. HTH, -dnh -- Bored? Want hours of entertainment? Just set the initdefault to 6! Whee! -- 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
![](https://seccdn.libravatar.org/avatar/a7b7e9d84d4645c8a521755b0c3839e9.jpg?s=120&d=mm&r=g)
* Klaus Becker schrieb:
[...] Sollte aus irgendeinem Grund die Partition auf dem die Original-Daten liegen nicht mehr gemountet sein, dann wird rsync doch hingehen und auch die Backup-Daten löschen. Oder?? mit --delete, ja! Ich setze Testdateien z.B. "marke_rsync_nicht_loeschen" mit chmod 400 marke_rsync_nicht_loeschen; chown root.root marke_rsync_nicht_loeschen oder sowieso vorhandene Verzeichnisse des gemounteten Verzeichnisses [ -d /mnt/data ] && rsync .... (oder chic'er mit if [ -d /mnt/.......]; then ..) ein, die vor dem rsync auf vorhandensein geprüft werden, siehe auch Vorgehen von Ralf Prengel. Dutzendfach bewährt.
Gruss Ekkard -- liburg.com - linux and more -- 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
participants (8)
-
Andre Tann
-
Axel Birndt
-
David Haller
-
Ekkard Gerlach
-
Klaus Becker
-
Peter Steffinger
-
prengel
-
Ralf Arndt