From 9eccee96dc82cb6f88c012f65fe4b6b69eee06bc Mon Sep 17 00:00:00 2001 From: mxmehl Date: Mon, 29 Jun 2015 11:57:38 +0300 Subject: [PATCH] new backup script for web files and mysql databases --- server/back-web.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 server/back-web.sh diff --git a/server/back-web.sh b/server/back-web.sh new file mode 100644 index 0000000..9ddb07f --- /dev/null +++ b/server/back-web.sh @@ -0,0 +1,43 @@ +#!/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