44 lines
880 B
Bash
44 lines
880 B
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# echo "0 14 * * * root /root/scripts/server/back-web.sh" > /etc/cron.d/back-web
|
||
|
|
|
||
|
|
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
|
||
|
|
|
||
|
|
|
||
|
|
# 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
|