Архивирование БД. v7. v8. DBF. SQL

22.12.15

База данных - Архивирование (backup)

Простые примеры архивирования БД. Простой вариант для решения резервного копирования 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

Архивирование БД. v7. v8. DBF. SQL. Архивирование базы данных. Резервное копирование.Резервное копирование базы данных.

См. также

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72788    625    45    

84

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Программа позволяет выполнять автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    15705    21    6    

27

Архивирование (backup) Администрирование СУБД Системный администратор Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    9426    n_mezentsev    15    

27

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    28598    sapervodichka    37    

147

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    5732    3    Gnom-Gluck    6    

7

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4689    3    Giblarium    12    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. AlexeyPapanov 466 22.12.15 12:00 Сейчас в теме
я в батниках не силен, объясните.
для теста переписал батник, чтобы папка "D:\1C_DB\" архивировалась в "D:\1C_backup\".
после запуска бат-файл создает архив с именем "db_2.rar" в папке "D:\1C_backup\".
и еще создается файл D:\1C_backup\log\error2.log размером как и сам созданный архив.
для чего он нужен? ведь это получается копия архива. мы же его и так получили...
как можно в имя создаваемого архива добавить дату и время создания?

вот мой файлик:
cd d:\1C_backup\
ECHO Begin Backup: %DATE% %TIME% > D:\1C_backup\log\db.log
"D:\1C_backup\WinRAR\WINRAR.EXE" u -m5 -r -ed -dh -y -ibck -as -ep2 -agA -inul -ilogD:\1C_backup\log\error.log D:\1C_backup\db_.rar -x*\Log\* D:\1C_DB\*.*
ECHO End Backup: %DATE% %TIME% >> D:\1C_backup\log\db.log
ECHO. >> D:\1C_backup\log\DB.log
2. LavinVladik 231 22.12.15 13:42 Сейчас в теме
(1) El_Loco,

D:\1C_backup\log\error2.log - в этот файл должны ошибки сваливаться если таковы будут при архивирование.
возможно нет каталога D:\1C_backup\log\
"db_2.rar" - здесь "2" означает вторник


Ключ -AG[формат] — добавить к имени архива текущие дату и время


--------------------------------------------------------------------------------


Добавляет к имени архива дату и время создания архива. Полезно при регулярном создании резервных копий.

По умолчанию принимается формат "YYYYMMDDHHMMSS", но его можно переопределить с помощью параметра формат этого ключа. Допускается использовать следующие символы:


Y
Год
M
Месяц
MMM
Месяц в виде строки (Jan, Feb и т.д.)
W
Номер недели (неделя начинается с понедельника)
A
День недели (1 - понедельник, 7 - воскресенье)
D
Порядковый день месяца
E
Порядковый номер дня в году
H
Часы
M
Минуты (обрабатывается как минуты, если стоит после часов)
S
Секунды
N
Номер архива (WinRAR ищет уже существующий архив со сгенерированным именем, и если таковой обнаруживается, то увеличивает номер архива, чтобы сгенерировать уникальное имя)


Каждый из указанных выше символов форматирующих строк соответствует только одному символу, добавляемому к имени архива. Например, для двухсимвольного номера недели используйте WW, а для обозначения года из четырёх цифр — YYYY.

Если строка формата начинается с символа '+', то положения строки даты и базового имени архива меняются местами, т.е. дата будет предшествовать имени архива.

Строка формата может содержать необязательный текст, заключённый в фигурные скобки '{' и '}'. Этот текст будет вставлен в имя архива.

Будьте осторожны с ключом -ag при обновлении уже существующих архивов. В зависимости от строки формата и времени, прошедшего с момента предыдущего использования ключа -ag, имена сгенерированного и имеющегося архивов могут оказаться разными. В этом случае WinRAR вместо обновления уже существующего архива создаст новый.

Все остальные символы добавляются к имени архива без изменений.


Примеры:

а) Использовать формат по умолчанию YYYYMMDDHHMMSS:

WinRAR a -ag backup

б) Использовать формат DD-MMM-YY:

WinRAR a -agDD-MMM-YY backup

в) Использовать формат YYYYMMDDHHMM, поместив дату до 'backup':

WinRAR a -ag+YYYYMMDDHHMM backup

г) Использовать формат YYYY-WW-A с полями описания:

WinRAR a -agYYYY{год}-WW{неделя}-A{день_недели} backup

д) Использовать формат YYYYMMDD и нумерацию архива. Это позволяет генерировать уникальные имена даже в том случае, если маска формата YYYYMMDD используется несколько раз в один и тот же день:

WinRAR a -agYYYYMMDD-NN backup


NSHMU6; AlexeyPapanov; +2 Ответить
3. AlexeyPapanov 466 22.12.15 15:56 Сейчас в теме
спасибо вам за простой и понятный пример!
а вы написали, что хранится последние 7 копий.
а в коде я не нашел соответствующего параметра.
как дописать еще удаление старых копий?
4. LavinVladik 231 22.12.15 16:29 Сейчас в теме
(3) El_Loco,

вот ключ отвечает за номер копии -agA, то есть от 1 до 7
если архив уже существует то он его обновляет, то есть архивирует только те файлы которые изменились.
5. PVG_73 17 23.12.15 16:53 Сейчас в теме
Чтобы решить "решает проблему растущего журнала транзакции для 8-ых версий" - нужно у БД SQL поставить модель восстановления Simple(Простая) в случае, если не используется дифференциальный бакап....
А вообще для MS SQL удобно использовать планы обслуживания. Вот только хранение последних 7 архивов что-то не смог настроить через план - пришлось админу копирование отдельно настроить...
6. gunner_Hans 07.01.17 02:03 Сейчас в теме
Оставьте свое сообщение