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.