Автоматическое создание ZFS снапшотов по расписанию в NAS4Free

Автоматическое создание ZFS снапшотов по расписанию в NAS4Free

Создание ZFS snapshot по расписанию cron для бекапа файлов

Не так давно столкнулся с необходимостью автоматического бекапа директории, а вернее Dataset (DTS) на файловом сервере на базе NAS4Free. Наличие снапшотов — отличное решение для ситуаций, когда необходимо оперативно восстановить данные. Да и по большому счету, снапшот — отличный инструмент для надежной работы с информацией на хранилищах. Ниже представлен простой скрипт на bash, который используется ОС FreeBSD и отрабатывает по расписанию (в 00:00 по МСК ежедневно), при этом происходит автоматическое удаление снапшотов, старших 31 дня:

#!/bin/sh

date=`date +20%g-%m-%e` # date gggg-mm-dd

olddate=`date -v-31d +20%g-%m-%e` # create date -31 day

backup_DTS1=’pool_name/DTS_name1′

backup_DTS2=’pool_name/DTS_name2′

zfs snapshot $backup_DTS1@$date

zfs destroy $backup_DTS1@$olddate

zfs snapshot $backup_DTS2@$date

zfs destroy $backup_DTS2@$olddate

После этого добавляем данный файл в расписание — crontab -e из консоли сервера. Также добавить задание в планировщик (Cron) можно через веб-интерфейс NAS4Free:

Добавление заданий в Cron через веб-интерфейс NAS4Free

Откатиться на нужную версию снапшота можно командой:

 zfs rollback _название_снапшота_

Отличный вариант для восстановления отдельного файла: монтируем снапшот в указанную директорию (папку) и вытаскиваем нужные данные в штатном режиме (без отката всего DTS):

zfs clone -o mountpoint=/путь-к-папке-монтирования название-снепшота место-хранения-в-сторажде

Готово. Скрипт и его отработка по расписанию для создания автоматических снапшотов указанных DTS выполнены.