diff --git a/debian/scripts/koha-run-backups b/debian/scripts/koha-run-backups index 1433c06ba1..a9223844fe 100755 --- a/debian/scripts/koha-run-backups +++ b/debian/scripts/koha-run-backups @@ -60,44 +60,23 @@ while true ; do esac done +if ! test $days -gt 0 ; then + echo "Parameter --days must be an integer greater than 0" + exit 1 +fi + for name in $(koha-list --enabled | grep -Fxv demo) do - 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 + if koha-dump ${exclude_indexes} "$name" > /dev/null; then + # Only delete old backups if dump script return success. - # Remove old dump files. - # FIXME: This could probably be replaced by one line of perl. - ls "$backupdir/" | - sed "s:^$name-\([0-9-]*\)\.\(sql\|tar\)\.gz$:\1:" | - sort -u | - tac | - sed "1,${days}d" | - tac | - while read date - do - tardump="$backupdir/$name-$date.tar.gz" - sqldump="$backupdir/$name-$date.sql.gz" - if [ -e "$tardump" ] && [ -e "$sqldump" ] - then - rm "$tardump" - rm "$sqldump" - elif [ -e "$tardump" ] || [ -e "$sqldump" ] - then - echo "Only one of a pair exists! Not removing it." - for x in "$tardump" "$sqldump" - do - if [ -e "$x" ] - then - echo "Exists : $x" - else - echo "Does not exist: $x" - fi - done + if [ -z "$dirname" ]; then + backupdir="$( xmlstarlet sel -t -v 'yazgfs/config/backupdir' /etc/koha/sites/$name/koha-conf.xml )"; + else + backupdir="$dirname/$name"; fi - done + + 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 + fi done