Rotierendes Backup per Cron

  • Rotierendes Backup per Cron

    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:

    Shell-Script

    1. #!/bin/sh
    2. BUP_DEST=/share/Backups/Qnap/
    3. BUP_NAME=test
    4. iDayOfWeek=$(date +"%u")
    5. iDayOfMonth=$(date +"%d")
    6. #Test
    7. #iDayOfWeek=7
    8. #iDayOfMonth=2
    9. # First day of month makes a monthly
    10. if [ $iDayOfMonth -eq 1 ]; then
    11. BUP_SUB=monthly
    12. else
    13. # Last day of week makes a weekly
    14. if [ $iDayOfWeek -eq 7 ]; then
    15. BUP_SUB=weekly
    16. else
    17. BUP_SUB=daily
    18. fi
    19. fi
    20. BUP_PATH="${BUP_DEST}/${BUP_NAME}/${BUP_SUB}"
    21. if [ ! -d "${BUP_PATH}" ]; then
    22. echo "Dir ${BUP_PATH} non existing, creating it..."
    23. mkdir ${BUP_PATH}
    24. fi
    25. # ======== create backup here ======
    26. DATE=`date +%Y%m%d%H%M%S`
    27. touch ${BUP_PATH}/${DATE}-foo-bup-test.txt
    28. chmod 777 ${BUP_PATH}/${DATE}-foo-bup-test.txt
    29. #echo "deleting files older than 7 days from daily"
    30. find ${BUP_DEST}/${BUP_NAME}/daily/ -mtime +7 -exec rm {} \;
    31. #echo "deleting files older than 4 weeks from weekly"
    32. find ${BUP_DEST}/${BUP_NAME}/weekly/ -mtime +28 -exec rm {} \;
    33. #echo "deleting files older than 12months from monthly"
    34. find ${BUP_DEST}/${BUP_NAME}/monthly/ -mtime +365 -exec rm {} \;
    35. 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