Я думаю, не стоит напоминать о том, насколько важно резервное копирование данных на сервере.
– Сисадмины бывают двух типов:
Первые – пока ещё не делают бэкапы…
Немного расскажу о том, как я подошел к решению этой проблемы на примере этого же сайта, litl-admin.ru.
Итак, по нашему плану, резервироваться нужно каждый день, поскольку статьи пишу “то густо, то пусто”, лучше предостеречься конечно.
Что будем резервировать?
Поскольку сайт у нас на стандартном движке, с использованием базы данных, то при резервном копировании нужно сохранять следующие пункты:
- База данных (таблица с WordPress);
- Структура файлов и папок;
Для резервирования напишем скриптик rezerv.day
#!/bin/bash
rsync -av "/path/to/litl_admin_site" "/root/backup/litl-admin.ru/"
mysqldump -u###1### -p###2#### ###3### > "/root/backup/litl-admin.ru/db.sql"
tar cvzf "/root/backup/D-litl-admin.ru-`date +%Y-%m-%d-%H-%M-%S`.tar.gz" "/root/backup/litl-admin.ru/"
find "/root/backup/" -mtime +10 -type f -name "*.gz" -delete
Я нарочно завуалировал некоторые параметры:
###1### – имя пользователя в Mysql, обладающего достаточными привилегиями;
###2### – пароль этого пользователя в Mysql;
###3### – имя базы, в которой хранятся данные сайта;
Что при этом происходит.
Первым делом, с помощью rsync (как пользоваться rsync) копируем файловую структуру сайта. В общем, сюда можно добавить так же ключ delete, чтобы удалялись файлы, которых не стало. Например, удалили картинки, или кэширование внутреннее. Нет нужды копить инкрементный бэкап, поэтому ключ можно добавить.
А лучше сделать другой файл, например rezerv.week и в нём чистить, а то мало ли! Как раз восстановить удаленный файл будет нужно.
Далее, сбрасываем дамп mysql базы данных в файл, в ту же папку. Все просто, потребуется только указать аутентификационные данные и файл-приёмник.
Ну и наконец, архивируем с помощью tar. Я добавляю в имя файла текущие элементы даты и времени, чтобы не запутаться, когда бэкапов будет много.
Напоследок, удаляем все архивы, возраст которых старше 10 дней. Если есть большой дисковый массив, конечно, можно хранить данные за месяц, и т.д. Но нет нужды.
Что можно добавить:
- Копирование бэкапа на другой сервер, либо сразу в облако, тот же dropbox;
- Резервирование конфигураций Апача, и других служб;
- Отправку уведомлений администратору, когда бэкап создался;
Теперь, запускаем кронтаб:
# crontab -e
и дописываем строку:
0 1 * * * /путь/к/rezerv.day
Таким образом файл будет запускаться каждый раз, когда на часах будет 1:00, т.е. ежедневно в час ночи.
Будьте очень внимательны!
В частности запись:
* 1 * * * /путь/к/rezerv.day
Приведет к тому, что файл будет запускаться каждую минуту в промежутке от 1:00 до 1:59, если объем диска не велик, то очень скоро всё переполнится.
Comments: