Нередко возникает задача резервного копирования файлов Битрикса. В стандартрных настройках Битрикса в панели управления есть две опции: резервные копии в облаке (там немного пространства) и на локальный диск.
Очевидно,что хранить резервные копии на локальном диске — все равно что «держать все яйца в одной корзине». Поэтому нужно забрать файлы с Битрикса на другое устройство. В моем случае это NAS Synology DS218+.
На Битрикс сервере папка в которой создаются бакапы указывается доступной для раздаче по ftp.
В NAS в «Task Scheduler» настраивается «User-defined script в котором лишь одна строчка с wget командой.
wget -r ftp://bitrix:[password]@[bitrix_address]:21/www/bitrix/backup/* -P /volume1/BitrixBackup --no-passive-ftp -nv -nH --cut-dirs=3
Обращаю внимание на несколько моментов при заборе данных по ftp с Битрикса через wget:
- Атрибут —no-passive-ftp переводит скачиваение wget-ом в активный режим. В моем случае это оказалось важно, по-другому wget не забирал даже список файлов в директории.
- -P /volume1/BitrixBackup — в какую папку складировать созданные файлы. Аналогичная команда —directory-prefix=/volume1/BitrixBackup
- -nv — убирает прогресс бар (progressbar) при скачивании, в противном случае в письме с логом придет гигантская простыня с цифрами скачивания на каждую строку.
- -nH — убирает создание папки с адресом сайта.
- —cut-dirs=3 — не создает подпапки иерархии /www/bitrix/backup.
Добавим дату к папке в которой сохраняются архивы. Протестируем, что при запуске указанного ниже скрипта в NAS Synology будет создана папка с текущей датой:
today=$(date +"%Y-%m-%d") mkdir -p /volume1/BitrixBackup/${today}
Подправим скрипт выше, чтобы при копировании резервные копии помещались в папку с текущей датой:
today=$(date +"%Y-%m-%d") wget -r ftp://bitrix:[password]@[bitrix_address]:21/www/bitrix/backup/* -P /volume1/BitrixBackup/${today} --no-passive-ftp -nv -nH --cut-dirs=3