From 97cb7ad208734e7706b6906b62ee05c4ed9a15f1 Mon Sep 17 00:00:00 2001 From: Olaf Rempel Date: Wed, 26 Jul 2006 17:19:44 +0200 Subject: [PATCH] add cleanup-backups.sh --- cleanup-backups.sh | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cleanup-backups.sh diff --git a/cleanup-backups.sh b/cleanup-backups.sh new file mode 100644 index 0000000..c8ea538 --- /dev/null +++ b/cleanup-backups.sh @@ -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