Предлагаю для такой задачи использовать стандартные средства Windows и свободно распространяемый пакет для работы с архивами 7-Zip.
Я бы сделал это следующим образом:
Создать .bat файл, с помощью которого будут запаковываться все данные карты, а так же база данных, привязанная к этой карте.
Для примера буду использовать хранилище на диске D и папку ZuluBackupDir, где будут храниться архивы с бэкапами на каждый день:
Код |
---|
REM Создаёт папку с текущей датой
MKDIR D:\ZuluBackupDir\%DATE%
REM Запаковывает все файлы, которые принадлежат вашей карте, исключая .cache файлы
"C:\Program Files\7-Zip\7z.exe" a D:\ZuluBackupDir\%DATE%\GisMap.zip "D:\Zulu 8.0\Data\Termo\<название карты>\" -y -xr!*.cache
REM Запускает задачу SQL и выполняет скрипт SqlCmdScript
sqlcmd -S <название_сервера> -d <название БД> -U <пользователь БД> -P <пароль пользователя БД> -i <путь к SQL скрипту>\SqlCmdScript.sql
REM Папку с файлами помещаем в единый архив с последующим удалением этой папки
"C:\Program Files\7-Zip\7z.exe" a D:\ZuluBackupDir\%DATE%.zip "D:\ZuluBackupDir\%DATE%" -y -sdel
REM Опционально: Удаление всех архивов старше 7 дней
forfiles.exe -p D:\ZuluBackupDir -s -d -7 -c "cmd /c del @path /q"
EXIT
|
Содержимое файла SqlCmdScript.sql:
Код |
---|
DECLARE @path VARCHAR(40)
SET @path = 'D:\ZuluBackupDir\' + CONVERT(varchar(15), GETDATE(), 104) + '\zulu_app.bak'
BACKUP DATABASE <название БД> TO DISK = @path WITH INIT
|
Необходимо предварительно хранилище бэкапов в SQL.
Создать в планировщике заданий новое задание, которое будет запускать .bat файл в удобное для вас время, например в 23:00.
Выглядит это вот так: