Hi,
Mein Ziel ist ein rotierendes Backup das folgendes erledigt:
-daily Backups: 7 Stück behalten
-weekly Backups: 4 Stück behalten
-monthly Backups: 12 Stück behalten
Zum Testen des Ablaufs habe ich ein Pseudo Script erstellt:
Bash
#!/bin/sh
BUP_DEST=/share/Backups/Qnap/
BUP_NAME=test
iDayOfWeek=$(date +"%u")
iDayOfMonth=$(date +"%d")
#Test
#iDayOfWeek=7
#iDayOfMonth=2
# First day of month makes a monthly
if [ $iDayOfMonth -eq 1 ]; then
BUP_SUB=monthly
else
# Last day of week makes a weekly
if [ $iDayOfWeek -eq 7 ]; then
BUP_SUB=weekly
else
BUP_SUB=daily
fi
fi
BUP_PATH="${BUP_DEST}/${BUP_NAME}/${BUP_SUB}"
if [ ! -d "${BUP_PATH}" ]; then
echo "Dir ${BUP_PATH} non existing, creating it..."
mkdir ${BUP_PATH}
fi
# ======== create backup here ======
DATE=`date +%Y%m%d%H%M%S`
touch ${BUP_PATH}/${DATE}-foo-bup-test.txt
chmod 777 ${BUP_PATH}/${DATE}-foo-bup-test.txt
#echo "deleting files older than 7 days from daily"
find ${BUP_DEST}/${BUP_NAME}/daily/ -mtime +7 -exec rm {} \;
#echo "deleting files older than 4 weeks from weekly"
find ${BUP_DEST}/${BUP_NAME}/weekly/ -mtime +28 -exec rm {} \;
#echo "deleting files older than 12months from monthly"
find ${BUP_DEST}/${BUP_NAME}/monthly/ -mtime +365 -exec rm {} \;
exit 0
Alles anzeigen
Das Script wird über Cron täglich aufgerufen. Die Dateien werden wie erwartet in den entsprechenden Ordnern angelegt.
Leider werden die älteren Dateien die "hinten runter fallen" sollten nicht wie erwartet gelöscht. Wenn ich das Script händisch aufrufe funktioniert aber alles. Jemand eine Idee?
/tobilux