Package: automysqlbackup
Version: 2.6+debian.4-4
Severity: normal
Tags: patch

Thomas,

Week 48 backups are never removed.
In some years, Week 47 backups are also never removed.

There are two problems:

1) The calculations to determine REMW are broken.
   They incorrectly assume the last Saturday of the year is in ISO week 53.
   Actually, it is 52 (89%) or 51 (11%).
   The following would be correct:
        REMW=$(date -d '-35 days' +%V)

2) Ancient backups are never removed.

Below is an untested patch which should fix these.

Thank you!
Daniel Lewart
Urbana, Illinois
---
diff -ru a/usr/sbin/automysqlbackup b/usr/sbin/automysqlbackup
--- a/usr/sbin/automysqlbackup  2021-08-30 09:50:19.000000000 -0500
+++ b/usr/sbin/automysqlbackup  2023-02-09 00:00:00.000000000 -0600
@@ -596,14 +596,7 @@
        if [ "$DNOW" = "$DOWEEKLY" ]; then
                echo Weekly Backup of Database \( $DB \)
                echo Rotating 5 weeks Backups...
-                       if [ "$W" -le 05 ];then
-                               REMW=`expr 48 + $W`
-                       elif [ "$W" -lt 15 ];then
-                               REMW=0`expr $W - 5`
-                       else
-                               REMW=`expr $W - 5`
-                       fi
-               rm -fv "$BACKUPDIR/weekly/$DB/${DB}_week.$REMW".*
+               find "$BACKUPDIR/weekly/$DB" -mtime +30 -print -delete
                echo
                        dbdump "$DB" 
"$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql"
                        BACKUPFILES="$BACKUPFILES 
$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.sql$SUFFIX"
@@ -640,14 +633,7 @@
                echo Weekly Backup of Databases \( $DBNAMES \)
                echo
                echo Rotating 5 weeks Backups...
-                       if [ "$W" -le 05 ];then
-                               REMW=`expr 48 + $W`
-                       elif [ "$W" -lt 15 ];then
-                               REMW=0`expr $W - 5`
-                       else
-                               REMW=`expr $W - 5`
-                       fi
-               rm -fv "$BACKUPDIR/weekly/week.$REMW".*
+               find "$BACKUPDIR/weekly" -mtime +30 -print -delete
                echo
                        dbdump "$DBNAMES" "$BACKUPDIR/weekly/week.$W.$DATE.sql"
                        BACKUPFILES="$BACKUPFILES 
$BACKUPDIR/weekly/week.$W.$DATE.sql$SUFFIX"

Reply via email to