Files
tareo-scripts/server/back-web.sh

53 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
if [ ! -e /etc/cron.d/back-web ]; then
echo "0 14 * * * root /root/scripts/server/back-web.sh" > /etc/cron.d/back-web
fi
BAKDIR=/root/backup/web
DATE=$(date +%y%m%d-%H%M)
WEBDIR=/var/www/
if [ ! -e $BAKDIR ]; then
mkdir -p $BAKDIR
fi
## Backup Webspace
EXCLUDE=$(mktemp)
find $WEBDIR -type l > $EXCLUDE
tar cfz $BAKDIR/www-"$DATE".tgz $WEBDIR -X $EXCLUDE
# Delete all backups older than 7 days
TMP=$(mktemp -d)
ls $BAKDIR/www-* | tail -n 7 | xargs -i mv {} $TMP/
rm $BAKDIR/www-*
mv $TMP/www-* $BAKDIR
rm -r $TMP
# Backup MySQL
databases=$(mysql -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
TMP=$(mktemp -d)
for DB in $databases; do
if [ "$DB" != "information_schema" ] && [ "$DB" != "mysql" ] && [ "$DB" != "performance_schema" ]; then
Q1="USE $DB;"
Q2="FLUSH TABLES WITH READ LOCK;"
Q3="SYSTEM /usr/bin/mysqldump --opt $DB > $TMP/$DB.sql;"
Q4="UNLOCK TABLES;"
CMD="${Q1}${Q2}${Q3}${Q4}"
mysql -e "$CMD"
gzip $TMP/$DB.sql
fi
done
tar cfz $BAKDIR/mysql-"$DATE".tgz $TMP/*
rm -r $TMP
rm $EXCLUDE