From 5fa1bdeb42ebd08082b606c74a52c3e511f70bd7 Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Wed, 1 May 2024 02:21:28 +0000 Subject: [PATCH] Bug 36435: Always delete old backup files Recently this step was moved inside the condition so would only run if koha-dump returned a success status. If a log file is being written to while koha-dump runs tar, tar returns a warning and a non-zero exit status. When this happens, koha-dump still completes but the success status condition is not true, so the old backups files are not deleted. There is no nice way to ignore the non-zero exit status from tar, and large libraries receive enough traffic for the tar 'file changed as we read it' warning to cause enough problems that old backup files begin to fill up the disk. This patch removes the koha-dump conditional. This returns the script to the behaviour before it was changed in Bug 30627. Test plan: 1. Create a number of backups and edit their modify time to being older than 2 days 2. run the koha-run-backups script and try and write to one of the files it includes while it's being backed up (you'll trigger a warning from tar saying the file changed as it was being read) 3. verify that the older backups are not being cleaned up and deleted despite new backups being made. 4. Apply this patch 5. Complete steps 1-2 again and then go and look to see if the older backups are being deleted. Sponsored-by: Catalyst IT --- debian/scripts/koha-run-backups | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/debian/scripts/koha-run-backups b/debian/scripts/koha-run-backups index a9223844fe3..ff969b05f0c 100755 --- a/debian/scripts/koha-run-backups +++ b/debian/scripts/koha-run-backups @@ -67,16 +67,14 @@ fi for name in $(koha-list --enabled | grep -Fxv demo) do - if koha-dump ${exclude_indexes} "$name" > /dev/null; then - # Only delete old backups if dump script return success. + koha-dump ${exclude_indexes} "$name" > /dev/null; - if [ -z "$dirname" ]; then - backupdir="$( xmlstarlet sel -t -v 'yazgfs/config/backupdir' /etc/koha/sites/$name/koha-conf.xml )"; - else - backupdir="$dirname/$name"; - fi - - find $backupdir -maxdepth 1 \( -mtime +$days -or -mtime $days \) -name $name-'[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].???'.gz \( -name \*.sql.gz -or -name \*.tar.gz \) -print0 | xargs -0 -r rm + if [ -z "$dirname" ]; then + backupdir="$( xmlstarlet sel -t -v 'yazgfs/config/backupdir' /etc/koha/sites/$name/koha-conf.xml )"; + else + backupdir="$dirname/$name"; fi + + find $backupdir -maxdepth 1 \( -mtime +$days -or -mtime $days \) -name $name-'[1-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].???'.gz \( -name \*.sql.gz -or -name \*.tar.gz \) -print0 | xargs -0 -r rm done -- 2.39.2