#!/bin/bash # Please see the backup(8) man page for full documentation. DATE=$(date +%Y%m%d) BACKUPS=/var/backups DUMPS=7 LEVEL0=$(find $BACKUPS -name "*full.tgz") INCR=$(find $BACKUPS -name "*incremental.tgz" | wc -l) if [ -e $LEVEL0 ] && [ $INCR -le $DUMPS ] then TYPE=incremental else TYPE=full rm -f $BACKUPS/*.snapshot fi tar -cz \ --exclude ".nobackup" \ --exclude "nobackup" \ --exclude ".thunix/nobackup" \ --exclude "/home/irc/*" \ --exclude='/home/slip/*' \ --exclude='/home/angelok/*' \ --exclude='/home/usernameak/*' \ --exclude='/home/ubergeek/*' \ --exclude='/home/amcclure/*' \ --exclude='/home/fosslinux/*' \ --exclude='/home/zszoke/*' \ --exclude='/home/duitser/*' \ /home/ \ /var/games/minetest-server/.minetest/ \ /var/lib/minecraft/paper/ \ /var/lib/bzflag/ \ /var/lib/znc/configs/ /var/lib/znc/moddata/ \ /var/spool/cron/ \ /var/spool/anacron/ \ -g $BACKUPS/$TYPE.snapshot \ -f $BACKUPS/$DATE-$TYPE.tgz chown root:sudo $BACKUPS/$DATE*.tgz chmod 640 $BACKUPS/*.tgz if [ $TYPE = full ] then cp $BACKUPS/full.snapshot $BACKUPS/incremental.snapshot # Remove dumps and the previous backup if there is another one. [ -e $LEVEL0 ] && rm $LEVEL0 $BACKUPS/*incremental.tgz fi # Database backup find $BACKUPS -name "*.sql.gz" -mtime +$DUMPS -exec rm {} \; mysqldump --all-databases | gzip > $BACKUPS/$DATE-all_databases.sql.gz chown root:sudo $BACKUPS/$DATE*.sql.gz chmod 640 $BACKUPS/*.sql.gz