2015-06-29 11:57:38 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
2015-06-29 12:03:05 +03:00
|
|
|
if [ ! -e /etc/cron.d/back-web ]; then
|
|
|
|
|
echo "0 14 * * * root /root/scripts/server/back-web.sh" > /etc/cron.d/back-web
|
|
|
|
|
fi
|
2015-06-29 11:57:38 +03:00
|
|
|
|
|
|
|
|
BAKDIR=/root/backup/web
|
|
|
|
|
DATE=$(date +%y%m%d-%H%M)
|
|
|
|
|
|
|
|
|
|
WEBDIR=/var/www/
|
|
|
|
|
|
|
|
|
|
if [ ! -e $BAKDIR ]; then
|
|
|
|
|
mkdir -p $BAKDIR
|
|
|
|
|
fi
|
|
|
|
|
|
2015-07-21 10:29:23 +03:00
|
|
|
## Backup Webspace
|
2015-06-29 11:57:38 +03:00
|
|
|
EXCLUDE=$(mktemp)
|
|
|
|
|
find $WEBDIR -type l > $EXCLUDE
|
|
|
|
|
tar cfz $BAKDIR/www-"$DATE".tgz $WEBDIR -X $EXCLUDE
|
|
|
|
|
|
2015-07-21 10:29:23 +03:00
|
|
|
# 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
|
|
|
|
|
|
2015-06-29 11:57:38 +03:00
|
|
|
|
|
|
|
|
# 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
|