Zum Inhalt

Kategorie: Linux

Alte Backups unter Linux automatisch löschen

Dieses einfache Script geht davon aus, dass im Verzeichnis /var/data/my-ftp-backup-folder/ Backups vorliegen und fängt an, alte Dateien zu löschen, sobald mehr als 7 Dateien vorliegen. Die Dateien müssen dabei schon passend geordnet vorliegen, z.B.
backup1.zip
backup2.zip
backup3.zip

backup9.zip


#!/bin/bash
# remove old backups automatically
# Version 1.0 -  03.04.2014
# https://www.denniswilmsmann.de/2014/04/alte-backups-unter-linux-automatisch-loeschen/

# how many backups should be kept?
let maxcount=7

let counter=0

for backupfile in /var/data/my-ftp-backup-folder/*; do
 let counter=$counter+1
 echo $backupfile
done
echo "Backup count:" $counter
if test $counter -gt $maxcount;
 then
 echo "Too many backups, forcing deletion..."
 let newcounter=0
 for deletefile in /var/data/my-ftp-backup-folder/*; do
 let newcounter=$newcounter+1
 # echo "newcounter" $newcounter
 let temp=$counter-$maxcount
 # echo "temp" $temp
 if test $newcounter -le $temp;
 then
 rm $deletefile
 echo "Deleting file" $deletefile
 fi

done

else
 echo "Nothing to do."
fi

Falls Dateien gelöscht werden, wird der betroffene Dateiename ausgegeben. Falls 7 (oder weniger) Dateien vorliegen, wird die Meldung „Nothing to do.“ ausgegeben. Ich lasse das Script täglich als cronjob laufen, um zu vermeiden, dass mein Backupverzeichnis vollläuft.

Funktioniert zuverlässig. 🙂 In dem Beispiel oben mit den Backups von 1 bis 9 löscht das Script also backup1.zip und backup2.zip.