rsnapshot
Как известно, админы делятся на два типа: те кто не делают бэкап и те кто уже делают. Вот так пока ничего не случилось самое время настроить бэкап.
Утилита rsnapshot основана на rsync, в состоянии делать периодические спэпшоты файлов по заданным путям, в том числе и удаленных систем через SSH. Имеется в репах большинства Linux дистрибутивов и даже роутеров. Снэпшоты создаются используя хардлинки, поэтому используемое место на жестком диске равняется общему занимаемому объему + объем инкрементов.
Конфигурация сводится к редактированию файла /etc/rsnapshot.conf. Для начала нужно создать папку где будут храниться бэкапы. У меня это будет backup в корневом каталоге.
$ cd /
$ sudo mkdir backup
Открываем любимым редактором файл /etc/rsnapshot.conf с правами администратора:
sudo vim /etc/rsnapshot.conf
Параметр snapshot_root содержит путь для бэкапов, изменяем его:
snapshot_root   /.snapshots/
Тут имеется нюанс: между именем параметра и его значением нужно ставить табуляцию, а не пробелы.
Раскомментируем нужные утилиты cmd_ssh, cmd_du и cmd_rsnapshot_diff.
Теперь раздел BACKUP LEVELS / INTERVALS. Тут задаются интервалы создания бэкапов и их ротация. Работает это так: задаются строки с именем и количеством копий. Фактически именно первая строка делает бэкап, остальные ротируют то, что набэкапила первая. Например вот как это будет у меня:
retain  twiceaday   2
retain  daily    7
retain  weekly   4
retain  monthly    12
Первая строка - бэкап будет делаться 2 раза в день, соответственно, храним 2 копии. После первого срабатывания будет создана папка twiceaday.0, после второго twiceaday.1. Когда придет время третьего срабатывания (я имею ввиду вообще по счету) то содержимое twiceaday.0 будет перезаписано, потом содержимое twiceaday.1 и так далее.
Вторая строка - она не делает бэкапа, как я уже говорил, она указывает брать содержимое крайней папки из 1-й строки и определить его в свою папку с соответствующим номером. Например при первом запуске в нашем случае будет создана папка daily.0 в которую попадет содержимое twiceaday.1. При втором выполнении произойдет то же самое только в папку daily.1 и так далее пока не дойдет до daily.6, следующее после него выполнение перезапишет daily.0, последующее daily.1 и т.д.
Третья и четвертая строки - аналогично второй, только они ротируют предыдущие уровни: weekly ротирует daily, а monthly - weekly.
Быть может не совсем понятно описал, но на деле все просто. У нас получится ежедневный бэкап длиной в год. Twiceaday ввел потому, что в бэкапе будет участвовать домашний ноутбук, а он может не оказаться включенным во время создания бэкапа, пускай отрабатывает дважды в день.
В разделе GLOBAL OPTIONS можно раскомментировать опцию logfile /var/log/rsnapshot, чтобы смотреть логи.
Раздел BACKUP POINTS / SCRIPTS. Тут можно выбрать что бэкапить и куда именно. Прописывается локальный каталог так:
backup  /home/  localhost/
/home/ - что бэкапится, localhost/ - куда.
После каждых изменений в конфиге обязательно нужно сделать конфигтест - проверку на наличие ошибок и исправить их если таковые имеются:
sudo rsnapshot configtest
Должно выдать Syntax OK. Если выдало что-то другое значит кое у кого не очень прямые руки  есть ошибки. У меня это было так:
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot configtest 
----------------------------------------------------------------------------
ERROR: /etc/rsnapshot.conf on line 67:
ERROR: cmd_rsnapshot_diff /usr/local/bin/rsnapshot-diff - \
         /usr/local/bin/rsnapshot-diff is not executable 
ERROR: ---------------------------------------------------------------------
ERROR: Errors were found in /etc/rsnapshot.conf,
ERROR: rsnapshot can not continue. If you think an entry looks right, make
ERROR: sure you don't have spaces where only tabs should be
После замены пути до rsnapshot-diff все стало на свои места.
Теперь можно проверить выполнение бэкапа:
sudo rsnapshot -t twiceaday
В выводе не должно быть ничего подозрительного.
Бэкап удаленной системы делается так:
backup  username@example.net:/home/username/ example.net/ exclude=/projects,exclude=/test
Cуть та же самая - что, куда. Еще один параметр - исключения (то, что не будет копироваться). Исключения делаются не только при удаленном бэкапе. Например так можно забэкапить систему локального компьютера:
backup  /       localhost/      exclude=/dev,exclude=/proc,exclude=/sys,exclude=/tmp,exclude=/run,exclude=/mnt,exclude=/media,exclude=/lost+found,exclude=/backup
Главное не забывать тестировать конфиги и запуск. После этого нужно сделать записи в кроне для автоматизации, хотя wiki арча предлагает создать сервис и таймеры для systemd, я решил сделать по старинке.
Для этого нужно создать файл /etc/cron.d/rsnapshot:
# rsnapshot backup
15      07,19    *       *       *       root    /usr/bin/rsnapshot twiceaday
0       0        *       *       *       root    /usr/bin/rsnapshot daily
0       01       *       *       7       root    /usr/bin/rsnapshot weekly
0       03       15      *       *       root    /usr/bin/rsnapshot monthly
Содержимое меняется на свой вкус и цвет. Вот и все, если есть чем дополнить пишите в комментах.
 Хочу рассказать о, как мне кажется, не совсем правильной политике к...
Хочу рассказать о, как мне кажется, не совсем правильной политике к...
