add cleanup-backups.sh
This commit is contained in:
commit
97cb7ad208
47
cleanup-backups.sh
Normal file
47
cleanup-backups.sh
Normal file
@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
# format: db-dumps-YYYY-MM-DD.sql.gz
|
||||
BACKUPS="/home/backups/db-dump-*"
|
||||
|
||||
DAILY_COUNT="14"
|
||||
WEEKLY_COUNT="8"
|
||||
MONTHLY_COUNT="12"
|
||||
|
||||
# -----
|
||||
|
||||
TODAY=$(date +%Y%m%d)
|
||||
TODAY_WEEKDAY=$(date +%w)
|
||||
|
||||
|
||||
TEMPFILE=$(mktemp)
|
||||
|
||||
# create list
|
||||
for offset in `seq 0 $DAILY_COUNT`; do
|
||||
tmp=$(date +%Y-%m-%d -d "-$offset days")
|
||||
echo $tmp >> $TEMPFILE
|
||||
done
|
||||
|
||||
for offset in `seq 0 $WEEKLY_COUNT`; do
|
||||
calc=$[$offset * 7]
|
||||
calc=$[$calc + $TODAY_WEEKDAY]
|
||||
|
||||
tmp=$(date +%Y-%m-%d -d "-$calc days")
|
||||
echo $tmp >> $TEMPFILE
|
||||
done
|
||||
|
||||
for offset in `seq 0 $MONTHLY_COUNT`; do
|
||||
calc=$[$offset * 28]
|
||||
calc=$[$calc + $TODAY_WEEKDAY]
|
||||
|
||||
tmp=$(date +%Y-%m-%d -d "-$calc days")
|
||||
echo $tmp >> $TEMPFILE
|
||||
done
|
||||
|
||||
# remove files not on the list
|
||||
ls -1 ${BACKUPS} | while read filename; do
|
||||
filedate=$(echo $filename | awk -F'-' '{print $3-$4-$5}')
|
||||
|
||||
grep $filedate $TEMPFILE &> /dev/null || rm $filename
|
||||
done
|
||||
|
||||
rm $TEMPFILE
|
Loading…
Reference in New Issue
Block a user