Мини сервер для бекапов часть 2 (настройка)

Продолжение. Начало в http://pikabu.ru/story/mini_server_dlya_bekapov_chast_1_podgotovitelnaya_3854168


Итак, сервер стоит, сетевой ресурс подключен, все пользователи созданы, права настроены. Но сам по себе он ничего еще не бекапит.


Теперь стоит немного рассказать о логике работы механизма резервного копирования. Изначально все файлы, лежащие на сетевом ресурсе сравниваются с "зеркалом" лежащим на локальном диске сервера с помощью утилиты rsync. Если есть отличие в размере файла или во времени последнего изменения, то копируется более новая версия. Далее во всей красе выступает файловая система ext4 или XFS с ее механизмом жестких ссылок. Об этом чуть позже.


Чтобы обеспечить работу rsync по расписанию, создадим небольшой скрипт.


sudo nano /home/backuper/sync.sh


Данная команда покажет вам окно текстового редактора. Содержимое необходимо сделать таким:


#!/bin/bash

rsync --archive --delete --progress /mnt/nw /backup/now

cp -rval /backup/now /backup/$(date +%Y-%m-%d)/

rm -rdf /backup/$(date --date='30 days ago' +'%Y-%m-%d')


Вот такой вот простенький скрипт. Что же он делает? В первую очередь он синхронизирует сетевую папку /mnt/nw с локальной /backup/now. При этом, сохраняет все атрибуты файлов, в первую очередь, дату изменения. Если файл на сетевом ресурсе был удален, то он удаляется и в локальной папке.

Затем содержимое папки /backup/now копируется жесткими ссылками в папку /backup/"текущая дата" При этом, количество свободного места на диске практически не уменьшается, именно за счет использования жестких ссылок. Файлы, удаленные сегодня, в предыдущих копиях остаются, пока не будет удалена последняя ссылка на них. Файлы, измененные сегодня удаляются в текущей копии и копируются заново, таким образом, предыдущие версии файлов остаются в сохранности все время жизни архивных копий.

Последняя строка удаляет папку с названием, содержащим текущую дату - 30 дней. То есть, мы имеем 30 ежедневных копий, к каждой из которых можно откатиться. При этом, места занимается сравнительно мало, так как все эти папки содержат лишь массив жестких ссылок на файлы. Файл в архивной копии удаляется только тогда, когда удаляется последняя ссылка на него. Ессно, что архивации и сжатия никакого не используется, что в случае ЧП дает нам очень оперативный доступ ко всем данным.


Осталось дело за малым, настроить работу этого скрипта по расписанию. Для этого, в линуксе есть очень хороший инструмент cron.

Вызовем консоль пользователя backuper


sudo -u backuper -sH


И начнем настраивать наш cron


crontab -e


При первом запуске, система спросит, какой редактор использовать. Лично я предпочитаю nano.


В конфигурационном файле пропишем следущее:


SHELL=/bin/bash

MAILTO=backuper

HOME=/home/backuper

0 23 * * * /home/backuper/sync.sh


Последнюю строку в конфигурации необходимо оставить пустой.


Вот и все. Ежедневно в 23:00 будет запускаться наш скрипт, сравнивать сетевой ресурс с локальной папкой, копировать при необходимости измененные и добавленные файлы и удалять архивные копии старше 30 дней. При этом, никаких сетевых ресурсов на нашем сервере извне не видно, никакие трояны и шаловливые руки не имеют доступа к архивным данным. А восстановление производится на сервере, путем копирования необходимых данных из нужной локальной папки в подключенную сетевую шару.

Мини сервер для бекапов часть 2 (настройка) Linux, IT, Резервное копирование, Сервер, Ubuntu, Длиннопост

Вот пример того, что хранится в моей папке с бекапами. Одна копия весит примерно 100 ГБ, все вместе занимает чуть более 120. И это без какого-либо сжатия.

2
Автор поста оценил этот комментарий
А я вот Rsnapshot использую для автоматизации бэкапов с помощью rsync и жёстких ссылок. А на виндовых компах cwrsync службой.
раскрыть ветку
Автор поста оценил этот комментарий

Здравствуйте, а можно как-то сделать простой скрипт для принудительного бекапа? Например человек после завершения работы запустил скрипт и сделал бекап своей работы? Бывает задерживаемся и не хочется все потерять.....

раскрыть ветку
Автор поста оценил этот комментарий

А уведомление на почту используешь?

раскрыть ветку
Автор поста оценил этот комментарий

А можно поподробнее описать суть работы скрипта? Меня интересует что происходит по происшествию 30 дней? Как выполняется консолидация файлов по прошествии 30 дней? Я правильно понимаю, если файл отсутствовал в начальной копии он кладется в папку с текущей датой, а на следующий день что? Он снова копируется? 

раскрыть ветку
Автор поста оценил этот комментарий

интересна логика работы системы, если криптор зашифрует шару на ПК пользователя, которая подключена как сетевой диск. Потом, в 23 часа NAS спокойненько забякает бекап из зашифрованных файлов, я полагаю?

раскрыть ветку