Автоматический бекап MySQL и Сайта

декабря 07, 2012 , , , , 0 Comments

бекап сайта MySQL
Довольно часто перед системым администратором или веб мастером встает вопрос систематического резервного копирования данных его сайта(ов). Ведь никто не застрахован от брака или поломки серверного железа или случайных косяков. Некоторые, бэкапятся по старинке через фтп и phpmyadmin, но такой процесс отнимает N времени, а время как говорится деньги. В этой статье я расскажу как делать такие бекапы автоматически, за нас уже давным давно все придумали.





С вероятностью в 99% у вас будут другие пути, другая ос, даже другие версии программ, но это не страшно. Давайте разберемся на моем примере и все сразу станет понятно.

Для начала создадим папку для бэкапов, рядом с папкой нашего виртуального хоста, чтобы было проще я назвал ее backup.
mkdir /var/www/mysite.ru/backup/

Теперь создадим скрипт, который будет сохранять нужные нам данные.
nano /home/backup.sh

#!/bin/bash

MyUSER="root" # Вписываем имя пользователя mysql, желательно создать отдельного с урезанными правами
MyPASS="mysqlpas" # Пароль от этого пользователя
MyHOST="127.0.0.1" # Адрес сервера MySQL
DBName="mysiteru" # Имя базы данных

DEST="/var/www/mysite.ru/backup" # путь к папке с бэкапами

# заносим в переменную DATE текущую дату
DATE=`/bin/date '+%Y.%m.%d'`

FILE="$DEST/$DBName"_"$DATE.sql.gz"

# оптимизация(если не нужна - комментируем)
mysqlcheck -u $MyUSER -p$MyPASS --auto-repair --check --optimize --all-databases >/dev/null 2>&1

# сохраняем дамп mysql
mysqldump -u $MyUSER -h $MyHOST -p$MyPASS $DBName --single-transaction | gzip -9 > $FILE

# архивируем все каталоги, кроме тех, в которых находится файл .noarchive
#/bin/tar -zcf /var/sites/mysiteru/www/ $DATE.backup.tar.gz --exclude-tag=.noarchive ./

/bin/tar -czvf $DEST/$DATE.tar.gz /var/www/mysite.ru/public/

# удаляем архивы, которым уже больше семи дней
/usr/bin/find $DEST -type f -name *.gz -atime +7 -exec rm -f \{\} \; >/dev/null 2>&1



После выполнения данного скрипта мы получим 2 архива: первый с базой mysql и второй с фаилами сайта. В имени каждого архива будет проставлена дата, чтобы не запутаться.

Вешаем скрипт в крон, чтобы бэкапы делались каждый день скажем в 4 утра, когда народу на сайте меньше.
crontab -e

выбираем nano и вписываем
0 4 * * * sh /home/backup.sh


0 коммент.: