Архивирование БД. v7. v8. DBF. SQL
Простые примеры архивирования БД. Простой вариант для решения резервного копирования DBF и SQL баз данных. Для автоматического резервного копирования достаточно добавить задание «планировщик заданий», которое будет выполняться раз в сутки, и установить WinRar.
- Описание
- Подробнее
Описание
Решение дает возможность создавать резервные копии «на лету» без выхода пользователей из БД. В выбранном каталоге создается семь копий рекурсивно, одна копия за каждый день недели. Также при наличии большого количества каталогов с БД, чтобы не писать для каждого пути свою команду, достаточно указать имя выше уровнем каталога.
Для SQl версии так же в выбранном каталоге создается семь копий рекурсивно, одна копия за каждый день недели, как самой БД, так и журнала транзакции, а после сжимается БД и журнал транзакции, что решает проблему растущего журнала транзакции для 8-ых версий.
Предварительно надо создать структуру каталогов для хранения архивов и логов на примере:
«E:\Backup\» — корневой каталог архива
«E:\Backup\log\» — каталог для логов
«E:\Backup\Sklad\» — каталог для файлов *.rar архивов
«E:\Backup\Dump\» — каталог SQL архива
«E:\Backup\BUH\» — каталог для файлов *.rar архивов из примера для нескольких подкаталогов
Пояснения по командной строке WinRAR:
u — Обновить файлы в архиве
-m5 — Установить метод сжатия
-r — Обрабатывать вложенные папки
-ed — Не добавлять пустые папки
-dh — Открывать совместно используемые файлы
-y — Подразумевать ответ «Да» на все запросы
-ibck — Запустить WinRAR как фоновый процесс в системном лотке
-as — Синхронизировать содержимое архива
-ep2 — Сохранять полные пути файлов
-agA — Добавить к имени архива текущую дату и время (А — день недели)
-inul — Не выводить сообщения об ошибках
-ilogE:\Backup\log\error.log — Записывать протокол ошибок в файл
E:\Backup\Sklad\db_.rar — создать файл архива
-x*\Log\* — Не обрабатывать указанный файл
D:\1C_DB\DB\*.* — путь к каталогу источнику
Первый пример. Создание rar архивов для каталог БД 1С DBF. Хранится 7 последних архивов.
::BackupDBF.bat
@ECHO OFF
cd E:\Backup\
ECHO Begin Backup: %DATE% %TIME% > E:\Backup\log\db.log:: создание rar архива для каталога D:\1C_DB\DB\"E:\BackUp\WinRAR\WINRAR.EXE" u -m5 -r -ed -dh -y -ibck -as -ep2 -agA -inul -ilogE:\Backup\log\error.log E:\Backup\Sklad\db_.rar -x*\Log\* D:\1C_DB\DB\*.*
ECHO End Backup: %DATE% %TIME% >> E:\Backup\log\db.log
ECHO. >> E:\Backup\log\DB.log
:: обход подкаталогов "DB_1 DB_2 DB_3 DB_4 DB_5" в каталоге "D:\1C_DB\" и создание rar архива для каждого найденого подкаталога в "DB_1 DB_2 DB_3 DB_4 DB_5"
ECHO Begin BackupBUH: %DATE% %TIME% >> E:\Backup\log\db.log
for %%n in (DB_1 DB_2 DB_3 DB_4 DB_5) do (
For /F "delims=" %%A In ('Dir "D:\1C_DB\%%n" /AD /B') Do (
"E:\BackUp\WinRAR\WINRAR.EXE" u -m5 -r -ed -dh -y -ibck -as -ep2 -agA -inul -ilogE:\Backup\log\error.log E:\Backup\Buh\%%n_%%A_.rar -x*\Log\* D:\1C_DB\%%n\%%A\*.*
))
ECHO End BackupBUH: %DATE% %TIME% >> E:\Backup\log\db.log
Второй пример. Создание архивов для БД 1С SQL и сжатие. Хранится 7 последних архивов.
::BackupSQL.bat
@ECHO OFF
cd E:\Backup\
ECHO Begin Backup: %DATE% %TIME% > E:\Backup\log\db.log:: создание архива для БД 1C SQL. Хранится 7 последних архивов.set /a y=%date:~6,4%
set /a m=1%date:~3,2%-100
set /a d=1%date:~0,2%-100
set /a i=(%y%-1901)*365 + (%y%-1901)/4 + %d% + (!(%y% %% 4))*(!((%m%-3)^&16))
set /a i=(%i%+(%m%-1)*30+2*(!((%m%-7)^&16))-1+((65611044^>^>(2*%m%))^&3))%%7+1
for %%n in (DB_1 DB_2 DB_3 DB_4 DB_5) do (
OSQL -Usa2 -Psqlsaktm -n -Q "BACKUP DATABASE [%%n] TO DISK = N'E:\Backup\Dump\%i%_%%n.dat_bak' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10" -o E:\Backup\log\dumps_%i%_%%n.log
OSQL -Usa2 -Psqlsaktm -n -Q "BACKUP LOG [%%n] TO DISK = N'E:\Backup\Dump\%i%_%%n.log_bak' WITH FORMAT, INIT, NAME = N'%%n-Журнал транзакций Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10" -o E:\Backup\log\log_%i%_%%n.log
OSQL -Usa2 -Psqlsaktm -n -Q "DBCC SHRINKDATABASE(N'%%n', 10 )" -o E:\Backup\log\shrinkd_%i%_%%n.log
OSQL -Usa2 -Psqlsaktm -n -Q "DBCC SHRINKFILE (N'%%n_log' , 0, TRUNCATEONLY)" E:\Backup\log\shrinkt_%i%_%%n.log
)
ECHO End Backup: %DATE% %TIME% >> E:\Backup\log\db.log

