#1030927 automysqlbackup: Week 48 and sometimes Week 47 backups are never removed

#1030927#5
Date:
2023-02-09 11:05:00 UTC
From:
To:
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"