1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #!/bin/sh
-
-
-
-
-
- DIRS="home root decrypted var/www var/lib/postgresql/9.1/main"
-
-
- DAILY=7
-
-
- WEEKLY=3
-
-
- WEEKLY_DAY=5
-
-
- MONTHLY=1
-
-
- MONTHLY_DAY=01
-
-
- TARSNAP="/usr/local/bin/tarsnap"
-
-
- EXTRA_FLAGS="-L -C /"
-
-
-
- set -e
-
-
- DOW=`date +%u`
-
- DOM=`date +%d`
-
- MOY=`date +%m`
-
- YEAR=`date +%Y`
-
- TIME=`date +%H%M%S`
-
-
- if [ X"$DOM" = X"$MONTHLY_DAY" ]; then
-
- BACKUP="$YEAR$MOY$DOM-$TIME-monthly"
- elif [ X"$DOW" = X"$WEEKLY_DAY" ]; then
-
- BACKUP="$YEAR$MOY$DOM-$TIME-weekly"
- else
-
- BACKUP="$YEAR$MOY$DOM-$TIME-daily"
- fi
-
-
- monit stop postgres
-
-
- for dir in $DIRS; do
- echo "==> create $BACKUP-$dir"
- $TARSNAP $EXTRA_FLAGS -c -f $BACKUP-$dir $dir
- done
-
-
- monit start postgres
-
-
-
-
-
-
- DAILY=`expr $DAILY + 1`
- WEEKLY=`expr $WEEKLY + 1`
- MONTHLY=`expr $MONTHLY + 1`
-
-
- TMPFILE=/tmp/tarsnap.archives.$$
- $TARSNAP --list-archives > $TMPFILE
- for dir in $DIRS; do
- for i in `grep -E "^[[:digit:]]{8}-[[:digit:]]{6}-daily-$dir" $TMPFILE | sort -rn | tail -n +$DAILY`; do
- echo "==> delete $i"
- $TARSNAP -d -f $i
- done
- for i in `grep -E "^[[:digit:]]{8}-[[:digit:]]{6}-weekly-$dir" $TMPFILE | sort -rn | tail -n +$WEEKLY`; do
- echo "==> delete $i"
- $TARSNAP -d -f $i
- done
- for i in `grep -E "^[[:digit:]]{8}-[[:digit:]]{6}-monthly-$dir" $TMPFILE | sort -rn | tail -n +$MONTHLY`; do
- echo "==> delete $i"
- $TARSNAP -d -f $i
- done
- done
- rm $TMPFILE
|