forked from thunix/ansible
58 lines
1.5 KiB
Bash
58 lines
1.5 KiB
Bash
#!/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" | sort | tail -n1)
|
|
INCR=$(find $BACKUPS -name "*incremental.tgz" | wc -l)
|
|
|
|
if [ -e $LEVEL0 ] && [ $INCR -le $DUMPS ]
|
|
then
|
|
TYPE=incremental
|
|
else
|
|
TYPE=full
|
|
rm -f $BACKUPS/*.snapshot
|
|
# Remove dumps and the previous backup if there is another one.
|
|
find $BACKUPS -name "*tgz" ! -newer $LEVEL0 -exec rm {} \;
|
|
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,$TYPE.snapshot}
|
|
chmod 640 $BACKUPS/{*.tgz,$TYPE.snapshot}
|
|
|
|
if [ $TYPE = full ]
|
|
then
|
|
cp -p $BACKUPS/full.snapshot $BACKUPS/incremental.snapshot
|
|
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
|