#!/bin/bash if [ ! -e /etc/cron.d/back-web ]; then echo "10 11 * * * root /root/tareo-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