David81
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
Hi Leute,
ich hab heute versucht, auf einem Bürosystem (alle Nutzer normale Desktopnutzer, 1 Admin, der ist aber (fast) nie am System angemeldet) eine Backuplösung wie im Betreff zu realisieren. Habe ein Script geschrieben, das die zu sichernden Verzeichnisse mit rsync auf einer USB-Platte speichert. Hab das script nach /root/ kopiert, im crontab eingetragen. Nun meine Frage: Meldet sich ein Dektopbenutzer an, wird die USB-Platte automatisch für diesen eingebunden. Läuft das rsync dann trotzdem? Es wird ja praktisch von root ausgeführt, nur eingehängt ist die Platte für bzw. von einem anderen Nutzer. Ist das wurscht? Und wenn nicht, wie behebe ich den Fehler? Vielen Dank!
|
svenXY
Anmeldungsdatum: 22. September 2008
Beiträge: 542
|
Ja, es ist wurscht, denn root darf überall schreiben und mit rsync (zumindest mit -a) werden auch die Berechtigungen erhalten. Wenn Du aber so arbeitest, dann muss Dir klar sein, dass falls mal niemand angemeldet ist, die Platte ausgehängt wird und sie dann auch von root nicht eingehängt wird. Bei solchen Gelegenheiten helfe ich mir immer damit, dass ich auf der gemounteten Platte eine (leere) Datei anlege, auf deren Existenz ich im Skript prüfe, bevor ich das Backup starte, um sicherzugehen, dass es sich auch um die eingehängte Platte handelt und nicht um den Moutnpoint. Das kann man auch direkt in der crontab machen, so z.B.:
1 4 * * * [ -f /media/usbdisk/meinedatei ] && rsync -a ...
|
David81
(Themenstarter)
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
Aha, alles klar, ich werd's probieren! Muss -f in eckige Klammern? Heißt [-f Datei] ... probiere, ob Datei vorhanden und führe dann ... aus, ganz salopp gesprochen, oder?
|
svenXY
Anmeldungsdatum: 22. September 2008
Beiträge: 542
|
David81 schrieb: Muss -f in eckige Klammern? Heißt [-f Datei] ... probiere, ob Datei vorhanden
ja, genau. Du musst es in eckige Klammern schreiben und es muss ein Leerzeichen hinter der öffnenden Klammer stehen. Oder Du benutzt
test -f datei
das ist dann das Selbe (siehe auch http://www.tldp.org/LDP/abs/html/special-chars.html#LEFTBRACKET) $ touch testfile /home/svenh/packages
$ [-f testfile] && echo yep
[-f: Befehl nicht gefunden
$ [ -f testfile] && echo yep
bash: [: Fehlende `]'
$ [ -f testfile ] && echo yep
yep
$ test -f testfile && echo yep
yep
|
David81
(Themenstarter)
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
Alles klar, vielen Dank! Mein Eintrag in der crontab sieht jetzt so aus: */15 * * * * root [ -f /media/Backup/testfile ] && rsync /home/ /media/Backup/ das müsste dann alle 15 min. testen, ob /media/Backup/testfile vorhanden ist und wenn ja, alle Unterverzeichnisse von /home in die entsprechenden Verzeichnisse auf /media/Backup syncen, oder? Ich bin mir nicht ganz sicher, ob es /home/ oder /home als Quelle heißen muss, beim Ziel weiss ich jetzt auch nicht, ob da noch ein / dahinter muss... was meinst du /ihr?
|
svenXY
Anmeldungsdatum: 22. September 2008
Beiträge: 542
|
willst Du das wirklich alle 15 Minuten machen? Und was ist mit Dateien, die gerade geöffnet sind? Die können dann inkonsistent sein. Du solltest mindestens rsync -a benutzen /home/ synct alles unterhalb von /home (ohne /home selbst), während /home auch /home selbst synct. Es kommt also darauf an, wie Deine Struktur auf dem Ziel aussehen soll.
|
David81
(Themenstarter)
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
svenXY schrieb:
Nope, es war eher ein Beispiel.
Auch das war ein Beispiel, ich benutze rsync -avxP, ich denke, das passt, oder?
Alles klar! Ha ich verstanden!
Nur noch eine Frage, die mich grad in den Wahnsinn treibt: Ich habe in meine /etc/crontab folgendes eingetragen: */30 * * * * root [ -f /media/Backup/checkfile ] && rsync -avxP /home/ /media/Backup/home/ Und das System mach NICHTS. Führt diesen Befehl einfach so nicht aus. Warum das bei mir auf Unverständnis stösst? Trage ich alles ab und incl. [ -f ... per copy und paste in ein Terminalfenster ein, macht er alles wie gewünscht..... was läuft da schief? Ich komm da leider nicht mehr mit...
|
David81
(Themenstarter)
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
Hab mich vertippt und ein editieren geht nicht, deswegen als Nachtrag: mein Eintrag in der /etc/crontab lautet natürlich: */30 * * * * root [ -f /media/Backup/checkfile ] && rsync -avxP /home/ /media/Backup/home/
|
svenXY
Anmeldungsdatum: 22. September 2008
Beiträge: 542
|
ich kann mich nur wiederholen: cron verschickt Mails mit dem Output des cronjobs an den User. Wenn Du also in der /etc/crontab (die m.E. nicht der richtige Ort dafür ist, aber du bist frei auf Deinem System zu tun, was du willst, schliesslich ist das hier ja Linux 😉) den User root angegeben hast, dann sollte die Mail auch an root gegangen sein. Dann mache doch bitte jetzt doch endlich mal:
sudo su -
mail
und schaue, ob der liebe cronjob nicht doch vielleicht erkennen lässt, wo es hängt. Was mir noch einfällt: /etc/crontab benutzt /bin/sh - die kommt möglicherweise mit dem [-Konstrukt nicht klar, weswegen Du statt der Klaammern noch test -f ... probieren könntest. So - ab hier solltest Du es selbst herausfinden können. Viel Glück und guten Rutsch, Sven
|
svenXY
Anmeldungsdatum: 22. September 2008
Beiträge: 542
|
Vergiss das mit /bin/sh:
| % ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2010-11-18 11:51 /bin/sh -> dash
% sh
# [ -f /etc/fstab ] && echo bla
bla
|
sh ist auf die dash gelinkt und die kann das [ -f... ]. Das ist also nicht Dein Problem. Existiert denn die Datei, auf dei Du testest und ist die Platte gemountet?
|
David81
(Themenstarter)
Anmeldungsdatum: 15. November 2008
Beiträge: 60
|
Trage ich alles ab und incl. [ -f ... per copy und paste in ein Terminalfenster ein, macht er alles wie gewünscht.....
Dieses Aussage impliziert, dass die Datei vorhanden ist und gefunden wird. Aber es hat sich gelöst, hab die beteffenden Zeilen aus der crontab gelöscht und nochmal neu getippt, jetzt läuft es wie gewünscht. Es muss irgendwo ein Fehler gewesen sein, den ich einfach nicht gesehen hab.... komisch. Und danke dir für deine Hilfe, ich hab wieder viel gelernt!
|