Автоматический бэкап БД MySQL и файлов сайта с отправкой на ftp

Запустил несколько сайтов на своем сервере. Куда же без систематического бэкапа?
Можно конечно делать его каждый день/неделю руками, но это не для нас :)

Задача:
— Ежедневный полный бэкап БД и всех файлов сайтов.
— Отправка бэкапов на удаленный ftp сервер.
— Удалять старые бэкапы.

Конечно будем выполнять все через консоль.

Сразу покажу итоговый файл в котором в комментариях всё описано:

#!/bin/bash
 
# данные для подключения к БД
MyUSER="root"
MyPASS="password"
MyHOST="127.0.0.1"
 
# Локальный каталог, куда будем складывать бэкапы
DEST="/home/backup"
 
#генерируем дату
DATE=`/bin/date '+%Y.%m.%d'`
 
#Генерируем путь и имя бэкапа БД
FILE="$DEST/$DATE.sql.gz"
 
# оптимизация(если не нужна - комментируем)
#mysqlcheck -u $MyUSER -p$MyPASS --auto-repair --check --optimize --all-databases >/dev/null 2>&1
 
# сохраняем дамп mysql (Я юэкаплю БД полностью --all-databases)
mysqldump -u $MyUSER -p$MyPASS --all-databases --single-transaction | gzip -9 > $FILE
 
# архивируем все каталоги
/bin/tar -czvf $DEST/$DATE.tar.gz /var/www/sites/
 
# удаляем архивы, которым уже больше семи дней
/usr/bin/find $DEST -type f -name *.gz -atime +7 -exec rm -f \{\} \; >/dev/null 2>&1
 
#Отправка бэкапа на ftp хранилище
ftp -n 192.168.200.97 << INPUT_END
quote user userlogin
quote pass password
cd backup/web
put $DATE.tar.gz
put $DATE.sql.gz
exit
INPUT_END

Добавить комментарий