Backup Script Problem

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
realclasic
Beiträge: 27
Registriert: 25.02.2003 01:39:54
Wohnort: München

Backup Script Problem

Beitrag von realclasic » 01.07.2003 21:46:46

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.

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 01.07.2003 21:55:34

Was für ein Teil wird denn nur gesichert?

EDIT: Was mir gerade auffällt: !/bin/sh müstte normalerweise #!/bin/sh heisen

Benutzeravatar
realclasic
Beiträge: 27
Registriert: 25.02.2003 01:39:54
Wohnort: München

Beitrag von realclasic » 01.07.2003 22:33:37

Hi,

ich verstehe das nicht mehr, das ist überhaupt nicht logisch!
Vorhin habe ich den Script "angepaßt" mit #!/bin/sh und seit dem
sichert er nur noch 51 Dateien (statt 877 Dateien) wenn der Script
geplant wird. Beim ausführen in der Konsole ist alles ok.

MFG

Michael B.

Benutzeravatar
realclasic
Beiträge: 27
Registriert: 25.02.2003 01:39:54
Wohnort: München

Beitrag von realclasic » 01.07.2003 22:36:38

Hi nochmal,

zu dem ersten Teil deiner Frage nochmal.

Der Script sichert nur den ersten Ordner oder besser gesagt ein Teil davon
und dann bricht er ab.

Wo könnte ich ein Logfile anschauen um dem Fehler auf der Spur zu kommen?

MFG

Michael B.

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 01.07.2003 22:42:26

Häng mal an den tar Befehl folgendes hintendran

Code: Alles auswählen

2> error
Danach müsste sich in der Datei error etwas finden.

Als welcher User wird das Script eigentlich in Cron ausgeführt?

Benutzeravatar
realclasic
Beiträge: 27
Registriert: 25.02.2003 01:39:54
Wohnort: München

Beitrag von realclasic » 01.07.2003 22:55:52

Hallo,

der Benutzer ist root.
Habe gerade 2> error eingetragen. Als error Meldung kommt:

tar: Removing leading `/ ' from member names

Diese Meldung bekomme ich auch wenn der Script manuell gestartet wird und richtig
funktioniert.

MFG

Michael B.

Benutzeravatar
Reto
Beiträge: 163
Registriert: 17.09.2002 12:23:00
Wohnort: Arbon am Bodensee

Beitrag von Reto » 02.07.2003 12:38:57

Wo steht denn das Skript, wenn Du es von Cron ausführen lässt?

Wenn ich zu Hause bin, schicke ich Dir mal meins. Das sieht fast genauso aus und funktioniert einwandfrei. Hab's nur leider weder im Kopf noch auf der Platte dieses Rechners :wink:

Gruß
Reto

Benutzeravatar
realclasic
Beiträge: 27
Registriert: 25.02.2003 01:39:54
Wohnort: München

Beitrag von realclasic » 02.07.2003 13:46:53

HI Reto,

habe bereits verschiedene Ordner ausprobiert /root /tmp /home etc...
Es bleibt dabei. Der Script wird nur in der Konsole richtig ausgeführt.

MFG

Michael B.

Benutzeravatar
Reto
Beiträge: 163
Registriert: 17.09.2002 12:23:00
Wohnort: Arbon am Bodensee

Beitrag von Reto » 02.07.2003 15:49:22

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:

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
Das Backup macht natürlich nur Sinn, wenn /usr und /home auf verschiedenen Platten liegen. Sonst ist wenn die eine abraucht alles futsch :wink:
Bei mir wird das Skript von anacron ausgeführt.

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 19.05.2005 12:03:41

hey, realclasic!

habe das gleiche problem..
funktioniert das script von Reto?

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 19.05.2005 17:37:45

Hallo realclasic,
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 
oder in 3 Teilen:

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 
Hilft Dir das? Fehlen noch Daten oder gibt es so Fehlermeldungen?

Gruß fuzzy

PS: bitte kontollieren ob ich da versehentlich Fehler übersehen habe

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 10.06.2005 14:05:58

nein, es funtz nicht....
wie kann ich denn ein script in der anacrontab als einen anderen user ausführen lassen?
Zuletzt geändert von burnez am 17.06.2005 12:18:17, insgesamt 1-mal geändert.

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 12:18:00

meine anacrontab:

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
mein script:

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!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 17.06.2005 14:47:40

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:
...geht den Deine Sicherung auf der Konsole/xterm ohne Fehler?

Code: Alles auswählen

/home/user/sicherung.bash
geht

Code: Alles auswählen

anacron -f 
ohne Probleme, wenn Du für diese Aktion diese "/etc/cron*" ausklammerst

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 
Gruß fuzzy

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 14:59:34

...geht den Deine Sicherung auf der Konsole/xterm ohne Fehler?
jawoll!
geht
Code:

anacron -f

ohne Probleme, wenn Du für diese Aktion diese "/etc/cron*" ausklammerst
sorry, das hab ich jetzt nicht verstanden...

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 17.06.2005 15:34:30

Hallo burnez,
sorry, dass ich in Rätzeln gesprochen habe :wink:

Code: Alles auswählen

man anacron
[...]
 -f     Force execution of the jobs, ignoring the timestamps.
[...]
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:

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  
[...]
...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" :wink:

Gruß fuzzy

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 16:02:25

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?

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 16:15:53

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!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 17.06.2005 16:29:32

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 :wink:
http://www.rootforum.de/forum/viewtopic ... 0f0ae7a6ad

Gruß fuzzy

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 16:49:32

funzzy, vielen dank erstmal! ich werde mir den link mal anschauen...

ist es nicht so, dass anacron nur eine erweiterung zu cron ist, und die cron-jobs ebenfalls ausführt? dann hätte ich ja auch als user die möglichkeit, anacron zu nutzen, halt über nen kleinen umweg..

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 17:30:05

ich werde es mal mit diesem link versuchen:

http://www.it.uc3m.es/marcos/doc/miniHO ... _user.html

hoffen wir mal, dass es klappt! :D

Benutzeravatar
burnez
Beiträge: 106
Registriert: 22.10.2004 09:57:05

Beitrag von burnez » 17.06.2005 17:47:12

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?

Benutzeravatar
meinitberater
Beiträge: 6
Registriert: 24.06.2005 10:39:42

Cron ist komisch

Beitrag von meinitberater » 24.06.2005 13:16:07

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

Antworten