webmodx2
5/14/2016 - 5:34 PM

Сервер: резервное копирование

Сервер: резервное копирование

#!/bin/bash

USER=mysqlroot
PASSWORD=mysqlrootpass
BACKUP=/home/user/Dropbox  # Бэкапы с выгрузкой в Dropbox
OLD=7   # Сколько дней хранить бэкапы

# Создаем директорию для сегодняшнего бэкапа
DIR=$BACKUP/`date '+%Y-%m-%d'`
mkdir $DIR
cd $DIR

# Сохраняем базы данных
for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
do
    # Не обрабатываем служебные БД и все БД сайтов modx-test.com, у них имена типа s1234.
    if [[ "$i" != "mysql" && "$i" != "performance_schema" && ! "$i" =~ ^s[0-9] ]]
        then mysqldump --skip-lock-tables -u$USER -p$PASSWORD $i | bzip2 -c > www-$i.sql.bz2;
    fi
done

# Сохраняем системные директории
tar -cjf sys-etc.tar.bz2 /etc/
tar -cjf sys-log.tar.bz2 /var/log/
tar -cjf sys-root.tar.bz2 /root/

# Сохраняем сайты
for i in `ls /var/www/`;
do
    # Обрабатываем все, кроме сайтов modx-test.com
    if [[ ! "$i" =~ ^s[0-9] ]]
        then tar -cjf www-$i.tar.bz2 /var/www/$i --exclude=core/cache/*;
    fi
done

# Чистим старые логи и бэкапы
find /var/log -type f \( -name "*.gz" -o -name "*.1*" \) -exec rm '{}' \;

# Если эта команда верно показывает старые директории после бэкапа - расскомментируйте следующую
find $BACKUP/* -maxdepth 0 -ctime $OLD -exec echo '{}' \;

# Эта команда удаляет старые резервные копии, и я ее закомментировал на всякий случай. 
#find $BACKUP/* -maxdepth 0 -ctime $OLD -exec rm -r '{}' \;