123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/bin/sh
-
-
-
-
-
- DIRS="home root data var/www etc/letsencrypt"
-
-
- 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
-
-
- cd /home/
-
-
- umask 077
- sudo -u postgres pg_dumpall -c | gzip > /data/postgresql-backup.sql.gz
-
-
- for dir in $DIRS; do
- echo "==> create $BACKUP-$dir"
- $TARSNAP $EXTRA_FLAGS -c -f $BACKUP-$dir $dir
- done
-
-
-
-
-
-
- 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
|