Hallo,
langsam wirds ziemlich kurios.
Ziel ist es die jüngste Datei in einem verzeichnis auf Band zu sichern.
Code:
backup01:~ # ls -lh /BACKUP/files/bpo/
total 544G
-rw-r--r-- 1 root root 35G Aug 16 00:19 bpo_files_backup_2011-08-15.tar
-rw-r--r-- 1 root root 57G Aug 17 00:54 bpo_files_backup_2011-08-16.tar
-rw-r--r-- 1 root root 37G Aug 18 00:19 bpo_files_backup_2011-08-17.tar
-rw-r--r-- 1 root root 56G Aug 19 00:53 bpo_files_backup_2011-08-18.tar
-rw-r--r-- 1 root root 38G Aug 20 00:19 bpo_files_backup_2011-08-19.tar
-rw-r--r-- 1 root root 62G Aug 23 01:11 bpo_files_backup_2011-08-22.tar
-rw-r--r-- 1 root root 24G Aug 24 00:04 bpo_files_backup_2011-08-23.tar
-rw-r--r-- 1 root root 60G Aug 25 01:13 bpo_files_backup_2011-08-24.tar
-rw-r--r-- 1 root root 62G Aug 26 01:30 bpo_files_backup_2011-08-25.tar
-rw-r--r-- 1 root root 117G Aug 27 03:19 bpo_files_backup_2011-08-26.tar
In diesem Fall das File bpo_%_2011-08-26.tar
Leider speichert das Script immer nur die Datei bpo_%_2011-08-23.tar aufs Band.
Ich habe jetzt mehrere angehensweisen durchprobiert.
Code:
backup01:~ # cat /BACKUP/cronjobs/writetotape.sh
#!/bin/sh
#Speichern des zu sichernden Files in einer Datei
find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1 > /BACKUP/files/backupfile.txt
#Speichern des Dateiinhalts in einer Variable.
BACKUPFILE=`cat /BACKUP/files/backupfile.txt | tail -1`
#BACKUPFILE=`find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1`
#Ausfuehren des Backup Befehls
tar cvf /dev/st0 /BACKUP/files/bpo/$BACKUPFILE > /var/log/tape_backup.log 2>&1
Hier sieht man das ich ein File erzeuge wo der Dateiname der zu sichernden Datei enthalten ist. Dieser wird mit cat in einer Variable gespeichert. Diese Variable setze ich dann im tar Vefehl ein um die jüngste Datei auf Band zu schreiben.
Hier habe ich wieder das Problem, das wenn ich das Script manuell ausführe, es keinerlei Probleme gibt. Beim ausführen über cron allerdings funktioniert es nicht (richtig), weil die falsche Datei aufs band geschrieben wird.
Hier noch die crontab:
Code:
#Crontab des users root.
SHELL=/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:/sbin/:usr/sbin:/bin/:usr/bin:/usr/bin/X11
#M S T M W Befehl
#-----------------------------------------------
0 23 * * 1-5 /BACKUP/cronjobs/files_backup.sh
0 23 30 * 1-5 /BACKUP/cronjobs/delete_old_backups.sh
#58 * * * * tar cvf /dev/st0 /BACKUP/files/bpo/$(find /BACKUP/files/bpo/ -maxdepth 1 -type f -printf "%f\n" | sort | tail -1) > /var/log/tape_backup.log 2>&1
#3 * * * * /BACKUP/cronjobs/daily_tape_backup2.sh
15 * * * * /BACKUP/cronjobs/writetotape.sh
Ich gehe schwer davon aus das der Befehl
find beim Aufruf über cron Probleme macht, da er für die korrekte Datei verantwortlich ist.
Außerdem habe ich schon ausprobiert den Befehl find nicht in eine Datei, sondern direkt in eine Variable zu schreiben, mit dem selben Ergebnis.
Es ist egal was ich mache. Immer kommt die falsche Datei hinten raus.
Weiß jemand Rat?
Schöne Grüße
Caipi