Что может?

  • Работа в режиме фонового сервиса (Windows и Linux);
  • Встроенный планировщик. В одном конфигурационном файле и расписание и все действия;
  • Резервное копирование произвольных файлов;
  • Резервное копирование баз данных PostgreSQL, MySQL, Microsoft SQL Server (Windows);
  • Отправка архивных копий на FTP или SFTP (FTP через SSH) сервер.

Сценарий использования

Задача сервиса используя простой конфигурационный файл выполнить действия для формирования локальной резервной копии по cron подобному расписанию и выгрузить полученный файл на один или несколько FTP сервера (асинхронно).

Конфигурация

Конфигурация сервиса находится в файле 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С. Перед началом архивации скриптом 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
Стартовый релиз

Загрузки

3,72 Мб , 20.01.2024 (28 загрузок)
1,52 Мб , 20.01.2024 (81 загрузок)
Пример конфигурационного файла
1,28 Кб , 20.01.2024 (16 загрузок)
2,37 Кб , 13.04.2023 (151 загрузок)