Для резервного копирования данных использую связку rsync и cron. Rsync умеет работать как локально, так и с удаленными серверами. В рамках данной статьи будет рассмотрен вариант локального использования.
Задача
На сервере с Debian организовать автоматическое резервное копирование на файловом сервере. Хранить одну инкрементальную копию, при удалении файлов в каталоге источнике файлы в резервной копии не удалять!
Решение
rsync
Как писал выше, будем использовать rsync. Описания всех параметров давать не буду, благо в интернетах полно статей с справочной информацией, разберем только используемые:
- -a — архивный режим, с сохранением прав, владельцев, дат и ссылок;
- -v — режим подробного вывода хода выполнения;
- -h — удобочитаемый вариант вывода.
Будем копировать содержимое каталога /mnt/POINT_01/media/photos в каталог /mnt/POINT_02/BackUp/media/, собрав параметры и каталоги получаем команду
# rsync -avh /mnt/POINT_01/media/photos /mnt/POINT_02/BackUp/media/
При первом выполнении команды будет скопировано все содержимое каталога-источника, а в последующие только изменения файлов и каталогов.
cron
Для решения текущей задачи запускать демон rsync смысла нет, обойдемся cron. Для этого в каталоге /usr/local/bin (именно он предназначен для хранения пользовательских скриптов) создадим файл cron_local_backup.sh
# nano /usr/local/bin/cron_local_backup.sh
В файле напишем получившуюся выше команду:
#!/bin/bash rsync -avh /mnt/POINT_01/media/photos /mnt/POINT_02/BackUp/media/
Раз задание будет выполняться по расписанию, то флаги -vh можно опустить, но я оставляю на случай ручного выполнения скрипта(на самом деле cron будет писать в почту сообщения об выполнении задания и его листинге).
Сохраним файл и сделаем его исполняемым:
# chmod +x /usr/local/bin/cron_local_backup.sh
Остается добавить файл в cron, для этого выполняем команду:
# crontab -e
и добавляем команду для выполнения по расписанию.
0 3 * * * /usr/local/bin/cron_local_backup.sh
Задание будет выполняться каждый день в 3 часа ночи.
Так выглядит простейшая настройка резервного копирования в рамках одной машины. Как варианты развития можно добавить:
- Хранение нескольких копий(Дневные, недельные, месячные);
- Оповещение о результатах выполнения по электронной почте(на самом деле cron будет писать в почту сообщения об выполнении задания и его листинге);
- Выполнение резервного копирования на удаленный сервер.
Источники: