Простой бэкап сайта по расписанию

Бэкап сайта (да и любых других папок на linux-сервере), равно как и баз данных (в частности, mysql) можно делать с помощью набора простых команд, помещенных в скрипт. Вводные данные: сайт в системе (пример на ubuntu) располагается по адресу /var/www/mysite.ru, база данных вертится на этом же сервере (dbname — mysitedb, dbuser — mysitedbuser, dbpass — Passw0rd). Бэкапить будем каждую ночь по записи в cron`е, архивы будем класть в папку /home/user/backup

Сначала создаем файл скрипта (кладем его в любое удобное место, например в /home/user/scripts) и делаем его исполняемым.

 
$ touch /home/user/scripts/backup.sh
$ chmod +x /home/user/scripts/backup.sh 

Открываем созданный файл на редактирование и пишем скрипт (не забываем заменить пути и учетные данные на свои).

 
#!/bin/bash
tar -czf /home/user/backup/mysiteru.tar.gz /var/www/mysite.ru
mysqldump --opt -umysitedbuser -pPassw0rd -B mysitedb > /home/user/backup/mysitedb.sql

Теперь добавляем задание в cron.

 
$ crontab -e

Будем бэкапить сайт и базу данных mysql каждую ночь в 2 часа. Дописываем последней строкой:

 
00 2 * * * sh /home/user/scripts/backup.sh

Сохраняем, перезапускаем службу cron и проверяем, что запись добавлена в расписание.

 
$ service cron restart
$ crontab -l

В этой конфигурации бэкап будет каждую ночь затирать предыдущий. Если нужно хранить бэкапы за несколько дней (например, 10) и потом удалять те, что старше, то листинг файла backup.sh будет таким:

 #!/bin/bash
tar -czf /home/user/backup/mysiteru_`date +%Y-%m-%d`.tar.gz /var/www/mysite.ru
mysqldump --opt -umysitedbuser -pPassw0rd -B mysitedb > /home/user/backup/mysitedb_`date +%Y-%m-%d`.sql 
find /home/user/backup/ -type f -mtime +10 -exec rm '{}' \;

Теперь в название каждого архива будет добавлена дата создания, а после создания копий папки сайта и БД команда find найдет и удалит все копии, которые старше 10 дней.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *