Бэкап данных с помощью связки FreeFileSync и 7-zip

Анамнез, так сказать:

Сервер Fujitsu rx300 s6, RAID6 из 6 1Тб дисков, поднят XenServer 6.2, крутятся несколько серверов, среди них Убунта с несколькими шарами, 3,5 миллиона файлов, 1,5 Тб данных, все это постепенно растет и пухнет.

Задача: настроить резервное копирование данных с файлового сервера, частично ежедневно, частично еженедельно.
Имеем виндовую машину для бэкапа с RAID5 (по бедности обычный системник с встроенным в мать RAID-контроллером) плюс отдельный 2Тб диск для промежуточного копирования текущего состояния файлов. Можно было использовать любой линукс дистрибутив, но эта машина уже была в наличии с рейд-массивом и виндоуз-лицензией.

Устанавливаем на бэкап-сервер FreeFileSync, настраиваем «зеркало» всего подряд со всех шар файлсервера раз в сутки вечером после 18 часов запуском через планировщик.

Важный момент: при сохранении пакетной задачи обязательно отметить «Закрывать окно задачи при завершении», иначе процессы будут плодиться и размножаться.

В исключения по маске кидаем временные файлы: *.dwl, *.dwl2, *.tmp.

FreeFileSync чрезвычайно хорошо использует сеть, копирование идет в несколько потоков, скорость достигает 80 Мбс при копировании крупных файлов, затыка на мелких файлах обнаружено не было.

Архивирование будем проводить уже на локальном бэкапном сервере, вместо используемого ранее TheCopier с архивированием по сети. Кстати, TheCopier прекрасен! Но при таких объемах просто не успевает все перекинуть, несмотря на 1Гбс интерфейс на бэкапнике и 2Гбс на файловом (бонд двух сетевых карт).

Также ранее использовался SyncToy, но при количестве файлов более 1,5-2 миллионов он перестал нормально работать, просто не справлялся.

Для архивирования нужных папок пишем батник для 7-zip:

set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_10-04.zip E:10-04
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_35-110.zip E:35-110
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_asu.zip E:asu
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_director.zip E:director
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_gpr.zip E:gpr
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_otiz.zip E:otiz
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_ps.zip E:ps
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_pto.zip E:pto
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_rza.zip E:rza
C:«Program Files»7-Zip7z.exe a -tzip -mx=1 -mmt=on -mtc=off -ssw D:backupsAll%now%_smeta.zip E:smeta

:: a — создание архива
:: -tzip или -t7z — тип архива ( zip в 1.5-2 раза быстрее )
:: -mx=1 — степень сжатия (1 минимум, 9 максимум значения x=[0 | 1 | 3 | 5 | 7 | 9 ])
:: -mmt=on — включает многопоточность где вдруг не включена
:: -mtc=off — отключает таймстампы файловой системы (когда сохранен, изменен и т.д.)
:: -ssw — сжимает также файлы, открытые для записи
:: -xr!.Sync* — исключает временные файлы BtSync из архивации, оставляя постоянные

Конструкция из set now=% и так далее позволяет сохранить формат записи времени в имя файла без проблем, которые возникали, когда число дня или месяца было менее 10, то есть подставляем нолик.

Комментарий -xr!.Sync* это рудимент, оставшийся от первоначально использованного BTSync.

До 500 Гб и 700-800 тысяч файлов BTSync работал еще ничего, синхронизировал на лету, но при текущих объемах очень жрал память и ресурсы процессора как на убунтовом файл-сервере, так и на виндовом бэкапном, где был запущен службой, а также просто насиловал дисковую систему постоянными чтениями-записями.

Хотя архиватор и 7-zip, но архивируем в формат zip вместо родного 7z, ибо намного быстрее, а разницы в сжатии при mx=1 практически нет никакой, проверено многими экспериментами.

Архивы выполняются по очереди.

Чистка папки с архивами происходит тоже через запланированную задачу с помощью утилиты fpurge, оставляя архивы не старше недели.
В результате имеем копию файлов за предыдущий день, а также архивы за последнюю неделю, удаленные файлы FreeFileSync складывает в корзину.

Источник: habr.com

Добавить комментарий