Backup per crontab geht nicht

DonTermi

Well-Known Member
Moin,

ich habe ein Problem das mein Backup per crontab nicht funktioniert.

crontab -l
Code:
*/5     *       *       *       *       /usr/local/bin/backup.sh > /mnt/backup.log

/usr/local/bin/backup.sh
Code:
#!/bin/sh

PREFIX=$(date +"%Y%m%d")
PREVDAY=$(($PREFIX-1))
BACKUPDIR=/mnt/nfs-backup

echo "saving configs ..."
/bin/tar -cjf /mnt/$PREFIX'_etcvar.tar.bz2' /etc

/mnt/backup.log wird angelegt und beschrieben und es steht drin
Code:
saving configs ...

Die Datei 20100225_etcvar.tar.bz2 wird auch erzeugt aber ist nur 0 Byte groß.

Führe ich von der Konsole das backup.sh Skript aus, so wird aber das Backup korrekt erstellt mit tar. Nur über den crontab geht irgendwo was schief ...

Ich setze die aktuelle OpenBSD Version 4.6 ein.

Hat jemand eine Idee ?
 
Zuletzt bearbeitet:
Welche Rechte, Owner, Group hat /usr/local/bin/backup.sh? kannst Du darauf ein 'ls -l' machen?

Code:
-rwxr-xr-x  1 root  wheel  400 Feb 25 09:04 /usr/local/bin/backup.sh

Aber würde er die Datei gar nicht ausführen können, könnte nicht mal die Datei mit 0 Byte anlegen ...


Hab backup.sh und /mnt 0777 gegeben. Selbes Ergebnis. Datei wird anlegt. 0 Byte groß.
 
Zuletzt bearbeitet:
Aber würde er die Datei gar nicht ausführen können, könnte nicht mal die Datei mit 0 Byte anlegen ...

Stimmt. Und der echo würde wohl auch nichts ausgeben.

Vielleicht kannst Du zum Testen im Script mal den stdout und stderror beim tar in eine Datei umleiten und dem tar noch ein -v mitgeben.
 
Problem gefunden ...

Code:
tar: Removing leading / from absolute path names in the archive
tar: could not exec bzip2: No such file or directory

tar: Failed write to archive volume: 1: Broken pipe
 
füg an den cronjob am besten noch ein "2> /mnt/backup.errors" an, oder check die emails von root ;)
 
Frag mich nur warum, wenn backup.sh per cronjob gestartet wird, er nicht Zugriff auf bzip2 hat ...

bzip2 ist installiert und von der Konsole aus nutzbar.
 
Problem gefunden ...

Code:
tar: Removing leading / from absolute path names in the archive
tar: could not exec bzip2: No such file or directory

tar: Failed write to archive volume: 1: Broken pipe

Das ist der Übeltäter. Die PATH-Variable enthält keinen Pfad zu bzip2, weshalb tar bzip2 nicht findet.

Code:
PATH="${PATH}:/usr/bin" /bin/tar -cjf /mnt/$PREFIX'_etcvar.tar.bz2' /etc
 
Obwohl das "Problem" jetzt geloest ist, muss ich dennoch mal einen Rant loslassen.

Die Flags -j, -z und -Z in tar(1) gehoeren meiner Meinung nach in die Tonne getreten, die gehoeren da definitv nicht rein, man kann genausogut gzip -cd | tar xf - oder tar cf - ... | gzip > whatever.tgz verwenden (entsprechend fuer compress(1) und bzip2(1)). Und abgesehen davon sollte eigentlich pax(1) das Tool der Wahl sein, aber das ist ja leider bei Linux-Systemen noch nicht per default dabei, da gibt's aus der Tuete nur tar(1).
 
Zurück
Oben