Простой сервис резервного копирования под 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
- расписание в форматеcrontab
title
- наименование задачиpath
- итоговый файл архивной копии, который будет выгружаться на FTP сервер.prepare
- одно или несколько действий для формирования файла резервной копии в файлpath
destinations
- одно или несколько направлений публикации файла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
- Стартовый релиз