Простой сервис резервного копирования под Windows/Linux
Что может?
- Работа в режиме фонового сервиса (Windows и Linux);
- Встроенный планировщик. В одном конфигурационном файле и расписание и все действия;
- Резервное копирование произвольных файлов;
- Резервное копирование баз данных PostgreSQL, MySQL, Microsoft SQL Server (Windows);
- Отправка архивных копий на FTP или SFTP (FTP через SSH) сервер.
Конфигурация
Конфигурация сервиса находится в файле config.xml рядом с исполняемым файлом сервиса.
Структура конфигурации:
<?xml version="1.0" encoding="utf-8" ?>
<taa>
<tasks>
<items>
<task>
<cron>*/10 * * * * *</cron>
<title>Test</title>
<path>backup.7z</path>
<prepare/>
<destinations/>
</task>
</items>
</tasks>
</taa>
task- задача.cron- расписание в форматеcrontabtitle- наименование задачиpath- итоговый файл архивной копии, который будет выгружаться на FTP сервер.prepare- одно или несколько действий для формирования файла резервной копии в файлpathdestinations- одно или несколько направлений публикации файлаpath
Секция подготовки prepare
Все действия секции prepare выполняются последовательно. Все действия должны быть выполненны успешно.
При возниконовении ошибки формирование резервной копии прерывается, а публикация - не осуществляется.
Действия определяются названием тега в конфигурации.
Действие cmd
Выполнение команды cmd для Windows среды и bash для Linux.
<cmd>
<script>taskkill /im 1cv8s.exe /f</script>
<skiperrors>true</skiperrors>
<successoutput />
</cmd>
script- командаcmd/bash;skiperrors- флаг игнорирования ошибок (любой код результата);successoutput- проверка успешности выполнения команды не по коду завершению, а по выдачи вstdout;
Действие sevenz
Действие предоставляет возможно архивации данных методами 7z, zip и т.д. пакета 7-zip (в среде Linux
p7zip-full устанавливается автоматически). Для среды Windows - должен быть установлен пакет соответствующий битности Windows в директории %ProgramFiles%\7-Zip.
<sevenz>
<remove>false</remove>
<password>%7zpass%</password>
<options>-spf2</options>
<nocheck>true</nocheck>
<source>"/etc/freeswitch/" "/usr/share/freeswitch/" "/etc/apt/auth.conf"</source>
<destination>/var/backups/freeswitch.7z</destination>
</sevenz>
source- путь (или несколько путей) для архивирования;destination- путь к результирующему архиву;password- пароль к архиву;remove-true(по умолчанию) флаг удаленияsourceпосле успешной архивации. Если вsourceуказана директория, маска, несколько источников - обязательно установить вfalse.
generate 8 password options- дополнительные флаги архивации для 7zip.nocheck-trueне проверять наличия исхоного файла. Если вsourceуказана директория, маска, несколько источников - обязательно установить вtrue.
В результате формат выполняемой команды (Linux) будет следующий:
/usr/bin/7z a -p %password% %options% %path% %source%
Действие postgres
Для формирования архива в среде Windows используется pg_dump.exe. Путь до утилиты должен быть указан в переменной среды PATH.
<prepare>
<postgres>
<host>localhost</host>
<port>5432</port>
<login>postgres</login>
<password>pass</password>
<database>taadatabase</database>
<compress>true</compress>
<path>/var/backups/taadatabase.dump</path>
</postgres>
</prepare>
postgres:
host- хост postgres;port- порт (не обязательный);login- имя пользователя;password- пароль пользователя;database- база данных;compress-trueесли необходимо сформировать бинарный дамп;path- путь к результирующему дампу;
Действие mysql
Для формирования архива в среде Windows используется mysqldump.exe. Путь до утилиты должен быть указан в переменной среды PATH.
<prepare>
<mysql>
<host>localhost</host>
<port>3306</port>
<login>root</login>
<password>pass</password>
<database>taadatabase</database>
<path>/var/backups/taadatabase.sql</path>
</mysql>
</prepare>
mysql:
host- хост mysql;port- порт (не обязательный);login- имя пользователя;password- пароль пользователя;database- база данных;path- путь к результирующему дампу;
Действие mssql (SQL Server)
Для формирования архива используется sqlcmd.exe. Путь до утилиты должен быть указан в переменной среды PATH.
<prepare>
<mssql>
<host>(local)</host>
<login>sa</login>
<password>pass</password>
<database>taadatabase</database>
<options>INIT, FORMAT, STATS = 10</options>
<path>c:\backups\taadatabase.bak</path>
</mssql>
</prepare>
mssql:
host- хост MS SQL Server;login- имя пользователя;password- пароль пользователя;database- база данных;options- параметры архива;path- путь к результирующему дампу;
Публикация
Публикация осуществляется после успешной обработки секции prepare и наличии файла архива по пути task/path. Публикация осуществляется асинхронно по всем направлениям одновременно.
Публикация ftp
<destinations>
<ftp>
<host>ftp1.hexcore.ru</host>
<port>21</port>
<login>UserName</login>
<password>PaSSword</password>
<path>/freeswitch/weekly/freeswitch-%weekday%.7z</path>
<passive>true</passive>
</ftp>
</destinations>
host- хост FTP сервера;port- порт. По умолчанию - 21;login- имя пользователя;password- пароль пользователя;passive-trueдля использования пассивного режима клиента (по умолчанию);path- путь на FTP сервере для архива;
Публикация sftp (FTP через SSH)
<destinations>
<sftp>
<host>backup.ru</host>
<port>22</port>
<login>root</login>
<password>PaSSword</password>
<path>/freeswitch/weekly/freeswitch-%weekday%.7z</path>
</sftp>
</destinations>
host- хост SSH сервера;port- порт. По умолчанию - 22;login- имя пользователя;password- пароль пользователя;path- путь на SSH сервере для архива;
Примеры конфигурации
Freeswitch
Данная конфигурация создает архив с резервной копией конфигурации Freeswitch в файл 7z. Путь назначения /freeswitch/weekly/freeswitch-%weekday%.7z
с тегом %weekday% (день недели) позволяет легко организовать ротацию (перезапись архивов с
недельным циклом).
<?xml version="1.0" encoding="utf-8" ?>
<taa>
<!-- general -->
<debug>true</debug>
<tasks>
<items>
<task>
<cron>0 33 14 * * *</cron>
<title>freeswitch</title>
<path>/var/backups/freeswitch.7z</path>
<prepare>
<sevenz>
<remove>false</remove>
<password>PaSSword</password>
<options>-spf2</options>
<nocheck>true</nocheck>
<source>"/etc/freeswitch/" "/usr/share/freeswitch/" "/etc/apt/auth.conf"</source>
<destination>/var/backups/freeswitch.7z</destination>
</sevenz>
</prepare>
<destinations>
<ftp>
<host>ftp1.hexcore.ru</host>
<port>21</port>
<login>UserName</login>
<password>PaSSword</password>
<path>/freeswitch/weekly/freeswitch-%weekday%.7z</path>
<passive>true</passive>
</ftp>
</destinations>
</task>
</items>
</tasks>
</taa>
1С
Конфигурация для архивации баз данных 1С. Перед началом архивации скриптом cmd закрываются все запущенные экзампляры 1С.
<task>
<cron>0 0 0 * * 1,3,5</cron>
<title>1c-total</title>
<path>C:\1C\1c-total.7z</path>
<prepare>
<cmd>
<script>taskkill /im 1cv8s.exe /f</script>
<skiperrors>true</skiperrors>
</cmd>
<cmd>
<script>taskkill /im 1cv8.exe /f</script>
<skiperrors>true</skiperrors>
</cmd>
<sevenz>
<source>C:\1C\*.1cd</source>
<destination>C:\1C\1c-total.7z</destination>
<password></password>
<remove>false</remove>
<options>-r -sse</options>
<nocheck>true</nocheck>
</sevenz>
</prepare>
<destinations>
<sftp>
<host>ssh-backups.ru</host>
<port>22</port>
<login>UserName</login>
<password>PaSSword</password>
<path>/var/backups/weekly/1c-total-%weekday%.7z</path>
</sftp>
</destinations>
</task>
PostgreSQL
Ниже представлен блок prepare для архивации базы данных PostgreSQL:
<prepare>
<postgres>
<host>localhost</host>
<login>postgres</login>
<password>pass</password>
<database>taadatabase</database>
<compress>true</compress>
<path>/var/backups/taadatabase.dump</path>
</postgres>
<sevenz>
<password>PaSSword</password>
<source>/var/backups/taadatabase.dump</source>
<destination>/var/backups/taadatabase.7z</destination>
</sevenz>
</prepare>
После получения дампа (сжатого) от postgres, sevenz сожмет полученный дамп базы
данных и удалит исходный дамп.
Установка
Перед ручной установкой необходимо убедиться в наличии пакета .NET 7.
Установка сервиса в среде Linux (Debian 11+):
wget -O - https://bash-it.ru/debian/taa.server.backup/install.sh | bash
chmod +x ./taa.server.backup
./taa.server.backup /install
service taa.server.backup start
Установка сервиса в среде Windows:
taa.server.backup.exe /install
net start taa.server.backup
Что нового?
- 1.2.0
- Добавлена поддержка сервера сбора статистики по архивам (сам сервер еще не готов), позволяющий отслеживать задачи резервного копирования.
- Добавлена поддержка SFTP (
sftp) (FTP через SSH) для секцииdestinations - Добавлена секция
secretsпозволяющая хранить пароли/параметры от внешних сервисов в зашифрованном виде. - 1.0.34
- Стартовый релиз
Загрузки
Лицензионное соглашение для бесплатных версий программного обеспечения.