Backup Script Problem
- realclasic
- Beiträge: 27
- Registriert: 25.02.2003 01:39:54
- Wohnort: München
Backup Script Problem
Hallo Debianer,
ich habe mir ein Script geschrieben um ein tägliches Backup zu erstellen.
Dabei ist mir etwas seltsames aufgefallen. Wenn der Script in der Konsole
aufgerufen wird (/root/./backup) , dann wird alles gesichert (Ordner & Dateien).
Wenn aber der Script im Cron geplant und ausgeführt wird, dann wird nur ein Teil
der Dateien & Ordner gesichert. Eine Fehlermeldung bekomme ich nicht.
Ich weiss nicht mehr weiter, habe alles schon ausprobiert um das Problem selber
zu lösen (Attribute überprüft, Dateien & Ordner ausgelassen, Datum ausgelassen).
Der Script hat einwandfrei unter RedHat 7.3 funktioniert. Nach dem Umstieg auf Debian
leider nicht mehr.
Code:
!/bin/bash
datum=$(date +%d-%m-%y)
tar -czvf /home/backup/backup.$datum.tar.gz /home/daten /home/word /home/excel
MFG
Michael B.
ich habe mir ein Script geschrieben um ein tägliches Backup zu erstellen.
Dabei ist mir etwas seltsames aufgefallen. Wenn der Script in der Konsole
aufgerufen wird (/root/./backup) , dann wird alles gesichert (Ordner & Dateien).
Wenn aber der Script im Cron geplant und ausgeführt wird, dann wird nur ein Teil
der Dateien & Ordner gesichert. Eine Fehlermeldung bekomme ich nicht.
Ich weiss nicht mehr weiter, habe alles schon ausprobiert um das Problem selber
zu lösen (Attribute überprüft, Dateien & Ordner ausgelassen, Datum ausgelassen).
Der Script hat einwandfrei unter RedHat 7.3 funktioniert. Nach dem Umstieg auf Debian
leider nicht mehr.
Code:
!/bin/bash
datum=$(date +%d-%m-%y)
tar -czvf /home/backup/backup.$datum.tar.gz /home/daten /home/word /home/excel
MFG
Michael B.
Was für ein Teil wird denn nur gesichert?
EDIT: Was mir gerade auffällt: !/bin/sh müstte normalerweise #!/bin/sh heisen
EDIT: Was mir gerade auffällt: !/bin/sh müstte normalerweise #!/bin/sh heisen
[ jabber ] chimerer@amessage.de
- realclasic
- Beiträge: 27
- Registriert: 25.02.2003 01:39:54
- Wohnort: München
- realclasic
- Beiträge: 27
- Registriert: 25.02.2003 01:39:54
- Wohnort: München
Häng mal an den tar Befehl folgendes hintendran
Danach müsste sich in der Datei error etwas finden.
Als welcher User wird das Script eigentlich in Cron ausgeführt?
Code: Alles auswählen
2> error
Als welcher User wird das Script eigentlich in Cron ausgeführt?
[ jabber ] chimerer@amessage.de
- realclasic
- Beiträge: 27
- Registriert: 25.02.2003 01:39:54
- Wohnort: München
- realclasic
- Beiträge: 27
- Registriert: 25.02.2003 01:39:54
- Wohnort: München
Mein Skript ist in /etc/cron.daily/ plaziert und heisst "backup"
Das Skript sichert das gesamt Home-Verzeichnis mit den angegebenen Ausnahmen. Zugegebenermaßen gibt es professionellere Lösungen. Aber es funktioniert bei mir gut.
Skript:
Das Backup macht natürlich nur Sinn, wenn /usr und /home auf verschiedenen Platten liegen. Sonst ist wenn die eine abraucht alles futsch
Bei mir wird das Skript von anacron ausgeführt.
Das Skript sichert das gesamt Home-Verzeichnis mit den angegebenen Ausnahmen. Zugegebenermaßen gibt es professionellere Lösungen. Aber es funktioniert bei mir gut.
Skript:
Code: Alles auswählen
#!/bin/bash
#Source-Directory
SRCD="/home/"
#Target-Directory
mount /dev/hdc1 /win
TGTD="/usr/backups/"
#Filename
OF=home-$(date +%Y%m%d).tgz
#Packit!
tar --exclude=.tmp --exclude=thumbnails -czf $TGTD$OF $SRCD
Bei mir wird das Skript von anacron ausgeführt.
Hallo realclasic,
bringt Dir diese Veränderung eine bessere Sicherung?
Idee 1. mit "absoluten Pfaden":
oder in 3 Teilen:
Hilft Dir das? Fehlen noch Daten oder gibt es so Fehlermeldungen?
Gruß fuzzy
PS: bitte kontollieren ob ich da versehentlich Fehler übersehen habe
bringt Dir diese Veränderung eine bessere Sicherung?
Idee 1. mit "absoluten Pfaden":
Code: Alles auswählen
#!/bin/bash
datum=$(/bin/date +%d-%m-%y)
/bin/tar -czvf /home/backup/backup.$datum.tar.gz /home/daten /home/word /home/excel
Code: Alles auswählen
#!/bin/bash
datum=$(/bin/date +%d-%m-%y)
/bin/tar -czvf /home/backup/backup-daten.$datum.tar.gz -C / home/daten
/bin/tar -czvf /home/backup/backup-word.$datum.tar.gz -C / home/word
/bin/tar -czvf /home/backup/backup-excel.$datum.tar.gz -C / home/excel
Gruß fuzzy
PS: bitte kontollieren ob ich da versehentlich Fehler übersehen habe
meine anacrontab:
mein script:
beides gibt mir folgende fehlermeldung in der "/var/spool/mail/root"
From root@Kanotix Fri Jun 17 12:11:15 2005
Return-Path: <root>
Received: by Kanotix
via sendmail from stdin
id <m1DjFgp-0005NOC@Kanotix> (Debian Smail3.2.0.115)
Fri, 17 Jun 2005 12:11:15 +0000 (GMT)
Message-Id: <m1DjFgp-0005NOC@Kanotix>
Date: Fri, 17 Jun 2005 12:11:15 +0000 (GMT)
From: Anacron <root@Kanotix>
To: root@Kanotix
Subject: Anacron job 'cron.daily' on Box
/etc/cron.daily/smail:
expr: Warnung: nicht portable BRE: ,,^uid=0(root)": ,,^" als erstes Zeichen eines einfachen
regulären Ausdrucks ist nicht portabel; es wird ignoriert.
checkerr: ERROR: you must be root to do this!
Code: Alles auswählen
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
1 5 cron.daily nice run-parts --report /etc/cron.daily
7 10 cron.weekly nice run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
###added by user - versuch ###
1 5 Sicherungsscript /home/user/sicherung.bash
Code: Alles auswählen
#!/bin/bash
# Sicherungsscript
cd /home/user
dpkg --get-selections "*" > /home/user/paketliste$(date -I).txt ;
tar -czvf /home/user/Desktop/BACKUPZ/persoenliche_daten_BACKUPZ_$(date -I).tar.gz /home/user/.mozilla-thunderbird /home/user/.mozilla/firefox/d9k0wipr.default/bookmarks.html /home/user/paketliste$(date -I).txt /home/user/.Backups.html;rm -f /home/user/paketliste$(date -I).txt
echo "Sicherung wurde durchgeführt"
exit 0
beides gibt mir folgende fehlermeldung in der "/var/spool/mail/root"
From root@Kanotix Fri Jun 17 12:11:15 2005
Return-Path: <root>
Received: by Kanotix
via sendmail from stdin
id <m1DjFgp-0005NOC@Kanotix> (Debian Smail3.2.0.115)
Fri, 17 Jun 2005 12:11:15 +0000 (GMT)
Message-Id: <m1DjFgp-0005NOC@Kanotix>
Date: Fri, 17 Jun 2005 12:11:15 +0000 (GMT)
From: Anacron <root@Kanotix>
To: root@Kanotix
Subject: Anacron job 'cron.daily' on Box
/etc/cron.daily/smail:
expr: Warnung: nicht portable BRE: ,,^uid=0(root)": ,,^" als erstes Zeichen eines einfachen
regulären Ausdrucks ist nicht portabel; es wird ignoriert.
checkerr: ERROR: you must be root to do this!
...geht den Deine Sicherung auf der Konsole/xterm ohne Fehler?burnez hat geschrieben: beides gibt mir folgende fehlermeldung in der "/var/spool/mail/root"
[...]
Subject: Anacron job 'cron.daily' on Box
/etc/cron.daily/smail:
Code: Alles auswählen
/home/user/sicherung.bash
Code: Alles auswählen
anacron -f
Code: Alles auswählen
sid:/tmp# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
#1 5 cron.daily nice run-parts --report /etc/cron.daily
#7 10 cron.weekly nice run-parts --report /etc/cron.weekly
#@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
###added by user - versuch ###
1 5 Sicherungsscript /home/user/sicherung.bash
Hallo burnez,
sorry, dass ich in Rätzeln gesprochen habe
Wenn anacron Dein "Sicherungsscript" heute schon ausgeführt hat, wird es heute nicht nochmal ausgeführt.
Mit "anacron -f" aufgerufen und Du kommentierst die "/etc/cron*" aus,
wir Dein "Backupscript" nochmal aufgerufen und Du kannst sehen ob das Script einen Fehler verursacht.
Als Beispiel:
...das ist nur eine "Test-Sicherung" und nicht mit Deinem Script vergleichbar...
Ich hoffe, dass macht es verständlicher.
Sofern dass auch ordentlich durchläuft, vermute ich ein Problem mit "/etc/cron*" und weniger mit "anacron" und Deinem "backup"
Gruß fuzzy
sorry, dass ich in Rätzeln gesprochen habe
Code: Alles auswählen
man anacron
[...]
-f Force execution of the jobs, ignoring the timestamps.
[...]
Mit "anacron -f" aufgerufen und Du kommentierst die "/etc/cron*" aus,
wir Dein "Backupscript" nochmal aufgerufen und Du kannst sehen ob das Script einen Fehler verursacht.
Als Beispiel:
Code: Alles auswählen
cat /etc/anacron
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# These replace cron's entries
# 1 5 cron.daily nice run-parts --report /etc/cron.daily
# 7 10 cron.weekly nice run-parts --report /etc/cron.weekly
# @monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
1 1 Sicherung /home/fuzzy/test-shellscript
sid:/tmp# anacron -f
sid:/tmp# grep anacron /var/log/syslog
[...]
Jun 17 15:20:37 sid anacron[10692]: Anacron 2.3 started on 2005-06-17
Jun 17 15:20:37 sid anacron[10692]: Will run job `Sicherung' in 1 min.
Jun 17 15:21:37 sid anacron[10692]: Job `Sicherung' started
Jun 17 15:21:37 sid anacron[10692]: Job `Sicherung' terminated (mailing output)
Jun 17 15:21:37 sid anacron[10692]: Normal exit (1 job run)
Code: Alles auswählen
fuzzy@sid:~$ mail
[...]
From: Anacron <root@sid>
To: root@sid
Subject: Anacron job 'Sicherung' on sid
Message-Id: <E1DjGmv-0002mi-C2@sid>
Date: Fri, 17 Jun 2005 15:21:37 +0200
/bin/tar: Removing leading `/' from member names
Sicherung wurde durchgeführt
[...]
Ich hoffe, dass macht es verständlicher.
Sofern dass auch ordentlich durchläuft, vermute ich ein Problem mit "/etc/cron*" und weniger mit "anacron" und Deinem "backup"
Gruß fuzzy
ich hatte vor dem test in der "/var/spool/anacron/cron.daily" den timestamp gelöscht und es hat nichts genutzt...
ich verstehe auch das zusammenspiel von cron und anacron garnicht. was soll denn das alles mit crontab, anacrontab, cron.daily, cron.weekly etc?
edit: muss ich denn mit cron irgendetwas anstellen? muss ich mit "crontab -e" vorher etwas für den betreffenden user, also mich, erstellen, oder übernimmt das alles anacron?
ich verstehe auch das zusammenspiel von cron und anacron garnicht. was soll denn das alles mit crontab, anacrontab, cron.daily, cron.weekly etc?
edit: muss ich denn mit cron irgendetwas anstellen? muss ich mit "crontab -e" vorher etwas für den betreffenden user, also mich, erstellen, oder übernimmt das alles anacron?
also, ein "anacron -f" als root und ein anschließendes "grep anacron /var/log/syslog
" gibt mir folgendes aus:
Jun 17 16:12:35 Box anacron[21619]: Anacron 2.3 started on 2005-06-17
Jun 17 16:12:35 Box anacron[21619]: Job `cron.daily' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Job `cron.weekly' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Job `cron.monthly' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Will run job `Sicherungsscript' in 1 min.
Jun 17 16:13:35 Box anacron[21619]: Job `Sicherungsscript' started
Jun 17 16:13:48 Box anacron[21619]: Job `Sicherungsscript' terminated (mailing output)
Jun 17 16:13:49 Box anacron[21619]: Normal exit (1 job run)
das backup wird auch erstellt, von root.
wenn ich als "user" anacron -f ausführe, fängt die festplatte ziemlich zu nudeln an, es passiert aber nichts - das archiv wird nicht erstellt.
"gedit /var/spool/mail/root"
zeigt wiederum folgendes:
(...)Subject: Anacron job 'cron.daily' on Box
/etc/cron.daily/smail:
expr: Warnung: nicht portable BRE: ,,^uid=0(root)": ,,^" als erstes Zeichen eines einfachen
regulären Ausdrucks ist nicht portabel; es wird ignoriert.
checkerr: ERROR: you must be root to do this!
" gibt mir folgendes aus:
Jun 17 16:12:35 Box anacron[21619]: Anacron 2.3 started on 2005-06-17
Jun 17 16:12:35 Box anacron[21619]: Job `cron.daily' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Job `cron.weekly' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Job `cron.monthly' locked by another anacron - skipping
Jun 17 16:12:35 Box anacron[21619]: Will run job `Sicherungsscript' in 1 min.
Jun 17 16:13:35 Box anacron[21619]: Job `Sicherungsscript' started
Jun 17 16:13:48 Box anacron[21619]: Job `Sicherungsscript' terminated (mailing output)
Jun 17 16:13:49 Box anacron[21619]: Normal exit (1 job run)
das backup wird auch erstellt, von root.
wenn ich als "user" anacron -f ausführe, fängt die festplatte ziemlich zu nudeln an, es passiert aber nichts - das archiv wird nicht erstellt.
"gedit /var/spool/mail/root"
zeigt wiederum folgendes:
(...)Subject: Anacron job 'cron.daily' on Box
/etc/cron.daily/smail:
expr: Warnung: nicht portable BRE: ,,^uid=0(root)": ,,^" als erstes Zeichen eines einfachen
regulären Ausdrucks ist nicht portabel; es wird ignoriert.
checkerr: ERROR: you must be root to do this!
Hallo burnez,
Nee, "/etc/cron.*" ist im Normalfall für user Tabu!
Wie weit es "anacron" auch für user gibt und wie man es aufrufen muss weiß ich nicht - es muss dann auf alle Fälle gesondert von den "/etc/cron*" sein.
Mit cron kannst Du eine einen Cronjob für user machen - da sollten dann keine systemrelevanten Aufgaben mit drin sein
http://www.rootforum.de/forum/viewtopic ... 0f0ae7a6ad
Gruß fuzzy
Nee, "/etc/cron.*" ist im Normalfall für user Tabu!
Wie weit es "anacron" auch für user gibt und wie man es aufrufen muss weiß ich nicht - es muss dann auf alle Fälle gesondert von den "/etc/cron*" sein.
Mit cron kannst Du eine einen Cronjob für user machen - da sollten dann keine systemrelevanten Aufgaben mit drin sein
http://www.rootforum.de/forum/viewtopic ... 0f0ae7a6ad
Gruß fuzzy
ich werde es mal mit diesem link versuchen:
http://www.it.uc3m.es/marcos/doc/miniHO ... _user.html
hoffen wir mal, dass es klappt!
http://www.it.uc3m.es/marcos/doc/miniHO ... _user.html
hoffen wir mal, dass es klappt!
also, folgendes (ich folge der beschreibung im obigen link) als "root" in der bash eingeben:
1) groupadd anacron [erzeuge neue gruppe "anacron"]
2) adduser "user" anacron [fügt den user namens "user" zur neuen guppe hinzu]
3) chown root.anacron /var/spool/anacron/* [ändert den besitzer von " /var/spool/anacron/" inklusive aller unterordner in die gruppe "anacron"]
4) chmod g+w+r /var/spool/anacron/* [gibt der gruppe schreibrechte auf alle dateien innerhalb von " /var/spool/anacron/"]
5) zur "/etc/anacrontab" den gewünschten befehl hinzufügen
feddisch!
edit: ein kleines problem besteht weiter.. sobald anacron neu startet, werden die permissions wieder geändert... vieleicht ist da ein script am wwerkeln, welches dies tut? weiß das einer?
1) groupadd anacron [erzeuge neue gruppe "anacron"]
2) adduser "user" anacron [fügt den user namens "user" zur neuen guppe hinzu]
3) chown root.anacron /var/spool/anacron/* [ändert den besitzer von " /var/spool/anacron/" inklusive aller unterordner in die gruppe "anacron"]
4) chmod g+w+r /var/spool/anacron/* [gibt der gruppe schreibrechte auf alle dateien innerhalb von " /var/spool/anacron/"]
5) zur "/etc/anacrontab" den gewünschten befehl hinzufügen
feddisch!
edit: ein kleines problem besteht weiter.. sobald anacron neu startet, werden die permissions wieder geändert... vieleicht ist da ein script am wwerkeln, welches dies tut? weiß das einer?
- meinitberater
- Beiträge: 6
- Registriert: 24.06.2005 10:39:42
Cron ist komisch
Hi,
Cron ist ein bisschen schwierig .... Man muss bedenken, dass cron den richtigen user braucht.
Ausserdem wird die PATH-Variable neu gesetzt und viele andere Umgebungsvariablen !
Ich würde mich zum Einschränken der Möglichkeiten mal ganz auf die root-crontab beschränken, später wenns klappt, kannst Du es ja in einer User-crontab versuchen
Ich würde erstamal auf die ganzen weekly, daily crontabs verzichten, auch auf anacron und die Eigenarten von cron als root kennenlernen.
See: crontab -e
Du solltest auch die Ausgabe des Befehles, den Du in der crontab ausführen willst, explizit in eine Datei schreiben lassen.
a la "befehl >>/tmp/logfile 2>>/tmp/logfile"
cron schreibt eine Mail an den User. Da sollten dann die Fehlermeldungen drin stehen. Die mail wird einfach mit "mail" aufgerufen. Wenn Du allerdings die Ausgabe umleitest, wird in der Mail nix mehr drin stehen.
Dein Hauptproblem ist doch immer noch, dass Du nicht weisst, warum es nicht klappt, und dass Du keine Hinweise in Logfiles bekommst.
Ich habe mich auch zuerst viel mit cron geärgert, jetzt kenne ich die Macken, scheint mir
keeponhacking
Cron ist ein bisschen schwierig .... Man muss bedenken, dass cron den richtigen user braucht.
Ausserdem wird die PATH-Variable neu gesetzt und viele andere Umgebungsvariablen !
Ich würde mich zum Einschränken der Möglichkeiten mal ganz auf die root-crontab beschränken, später wenns klappt, kannst Du es ja in einer User-crontab versuchen
Ich würde erstamal auf die ganzen weekly, daily crontabs verzichten, auch auf anacron und die Eigenarten von cron als root kennenlernen.
See: crontab -e
Du solltest auch die Ausgabe des Befehles, den Du in der crontab ausführen willst, explizit in eine Datei schreiben lassen.
a la "befehl >>/tmp/logfile 2>>/tmp/logfile"
cron schreibt eine Mail an den User. Da sollten dann die Fehlermeldungen drin stehen. Die mail wird einfach mit "mail" aufgerufen. Wenn Du allerdings die Ausgabe umleitest, wird in der Mail nix mehr drin stehen.
Dein Hauptproblem ist doch immer noch, dass Du nicht weisst, warum es nicht klappt, und dass Du keine Hinweise in Logfiles bekommst.
Ich habe mich auch zuerst viel mit cron geärgert, jetzt kenne ich die Macken, scheint mir
keeponhacking