Автоматическое обновление и резервное копирование баз 1С

20.01.15

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

Случилось так, что взял я на поддержку порядка пятидесяти не типовых баз данных 1С, но с одинаковой конфигурацией. А базы эти расположены в разных городах, в разных часовых поясах, да на разных серверах. И чтобы сделать обновление, приходилось тратить много часов на то, чтобы слезно попросить пользователей выйти из базы, сделать резервную копию и накатить новую конфигурацию. Долго сказка сказывается, да не быстро дело делается. Решил я этот процесс автоматизировать...

Скачать файлы

Наименование Файл Версия Размер
Update.bat
.bat 2,63Kb
29
.bat 2,63Kb 29 Скачать

Выковал я из стали BAT-файл, да вооружил им Шедулер серверный. А файл тот был следующего содержания:

@ECHO OFF
CLS

SET BASE_NAME=ИмяБазыДанных
SET CONNECT_STR="File=""D:\1C_Base\МояБазаДанных"";"
SET USER_NAME=Update
SET USER_PWD=123

SET START_FILE="C:\Program Files (x86)\1cv82\8.2.19.90\bin\1cv8.exe"
SET BACKUP_DIR=D:\1C_Base\etc\Backup
SET CF_DIR=D:\1C_Base\etc\Update
SET LOG_DIR=D:\1C_Base\etc\Update\Log

SET UNLOCK_CODE=КодРазрешения

SET CF_FILE=%CF_DIR%\1Cv8.cf
SET LOG_FILE=%LOG_DIR%\%BASE_NAME%_%date:~6,4%-%date:~3,2%-%date:~0,2%.log
SET DUMP_FILE=%BACKUP_DIR%\%BASE_NAME%_%date:~6,4%-%date:~3,2%-%date:~0,2%.dt

IF NOT EXIST %CF_FILE% EXIT

ECHO --- Start the update %DATE% %TIME% ---
ECHO --- Start the update %DATE% %TIME% --- >> %LOG_FILE%
ECHO.
ECHO. >> %LOG_FILE%

ECHO --- Completion of the inactive terminal sessions ---
ECHO --- Completion of the inactive terminal sessions --- >> %LOG_FILE%
tskill *1cv8* /a /v
@ECHO.
@ECHO. >> %LOG_FILE%

ECHO --- Shutdown users ---
ECHO --- Shutdown users --- >> %LOG_FILE%
START "" /wait %START_FILE% ENTERPRISE /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /DisableStartupMessages /CЗавершитьРаботуПользователей /Out%LOG_FILE% -NoTruncate 
ECHO.
ECHO. >> %LOG_FILE%

IF EXIST %DUMP_FILE% GOTO NO_BACKUP

ECHO --- Creating a backup ---
ECHO --- Creating a backup --- >> %LOG_FILE%
ECHO Backup file: %DUMP_FILE%
ECHO Backup file: %DUMP_FILE% >> %LOG_FILE%
START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /DumpIB%DUMP_FILE% /Out%LOG_FILE% -NoTruncate
ECHO.
ECHO. >> %LOG_FILE%

:NO_BACKUP

ECHO --- Configuration update ---
ECHO --- Configuration update --- >> %LOG_FILE%
ECHO Update file: %CF_FILE%
ECHO Update file: %CF_FILE% >> %LOG_FILE%
START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /LoadCfg%CF_FILE% -WarningsAsErrors /Out%LOG_FILE% -NoTruncate
ECHO.
ECHO. >> %LOG_FILE%

ECHO --- Information base update ---
ECHO --- Information base update --- >> %LOG_FILE%
START "" /wait %START_FILE% DESIGNER /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /UC%UNLOCK_CODE% /UpdateDBCfg -WarningsAsErrors /Out%LOG_FILE% -NoTruncate
ECHO.
ECHO. >> %LOG_FILE%

ECHO --- Unlock database ---
ECHO --- Unlock database --- >> %LOG_FILE%
START "" /wait %START_FILE% ENTERPRISE /IBConnectionString%CONNECT_STR% /N%USER_NAME% /P%USER_PWD% /WA- /DisableStartupMessages /CРазрешитьРаботуПользователей /UC%UNLOCK_CODE% /Out%LOG_FILE% -NoTruncate
ECHO.
ECHO. >> %LOG_FILE%

ECHO --- End of update %DATE% %TIME% ---
ECHO --- End of update %DATE% %TIME% --- >> %LOG_FILE%
ECHO.
ECHO. >> %LOG_FILE%

PAUSE

BASE_NAME - Имя базы данных, используется в наименовании лог-файлов и файлов резервных копий.

CONNECT_STR - строка подключения к информационной базе. В случае файлового варианта должна выглядить так "File=""D:\1C_Base\МояБазаДанных"";" (обратите внимание на двойные кавычки). Для клиент-серверного варината "Srvr=""ИмяСервера"";Ref=""МояБазаДанных"";".

USER_NAME и USER_PWD - Соответственно логин и пароль пользователя под которым делается обновление. Полные права давать не обязательно, в типовых конфигурациях достаточно права администрирования.

START_FILE - Путь к программе 1С:Предприятие. Следует обратить внимание на то, что нужно обращаться к конкретному релизу (например, "C:\Program Files (x86)\1cv82\8.2.19.90\bin\1cv8.exe"), а не к файлу запускатору ("C:\Program Files (x86)\1cv82\common\1cestart.exe"). Дело в том, что этот файл запускает еще один новый процесс, а сам закрывается. В этом случае BAT-файл не будет дожидаться завершения каждого отдельного действия и запустить несколько версий 1С одновременно.

BACKUP_DIR - Путь для резервных копий. Имена файлов генерируются как ИмяБазыДанных_Год-Месяц-Число.

CF_DIR - Путь к файлу обновления 1Cv8.cf. Если файл в указанной директории есть, то начинается обновление, если нет - работа BAT-файла завершается.

LOG_DIR - Путь где будут храниться лог-файлы. Имена файлов генерируются как Год-Месяц-Число_ИмяБазыДанных.

Прошу прощения за английские слова. Проблема в том, что BAT-файл должен быть в кодировке 866 OEM, а лог программа 1С пишет в 1251 ANSI.

Итак, что делает скрипт.

1. Проверяет наличие файла обновления по указанному пути. Если файла нет, то скрипт завершается.

2. Убивает зависшие процессы: tskill *1cv8* /a /v

3. Завершает работу всех пользователей и блокирует базу для входа.

4. Если в текущую дату еще не делалась резерваная копия, то делает выгрузку данных.

5. Обновляет конфигурацию.

6. Обновляет информационную базы.

7. Разблокирует базу для входа пользователей.

Теперь я просто кладу вечером файл обновления в нужную папку, прихожу утром и, на всякий случай, проверяю логи, дабы убедиться, что все обновилось.

1с 8.2 обновление резервное копирование

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

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

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42523    10    24    

38

BackUPv8 - система резервного копирования баз 1С

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

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

1200 руб.

03.09.2014    14733    13    6    

18

Резервное копирование журнала транзакций, наконец-то!

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

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

04.12.2023    5879    n_mezentsev    15    

25

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

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

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

07.10.2022    19836    sapervodichka    36    

142

Архивирование базы в dt и дамп postgres

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

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

1 стартмани

25.08.2022    4720    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

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

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

1 стартмани

02.06.2022    4236    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ololoanonim 3 20.01.15 12:13 Сейчас в теме
2. mmoozzgg 20.01.15 13:39 Сейчас в теме
3. Nicholas 888 21.01.15 06:38 Сейчас в теме
(2) mmoozzgg, изначально планировал количество батников по количеству серверов. Но в итоге, пришел к мнению, что лучше сделать отдельный батник на каждую базу. Иначе, в случае какой-либо ошибки могут не обновиться все базы. Плюс обновления нескольких баз можно запускать параллельно.
В общем-то, пути на всех серверах у меня одинаковые, поэтому созданик батника сводится к его копированию и изменению всего двух параметров: BASE_NAME и
CONNECT_STR, в редких случаях еще меняю версию в START_FILE (в идеале хочу везде обновиться до одной версии).
4. TMV 14 21.01.15 11:14 Сейчас в теме
(0),
порядка пятидесяти не типовых баз данных 1С, но с одинаковой конфигурацией
Не РБД ли?
5. Nicholas 888 21.01.15 13:46 Сейчас в теме
6. chmv 28.01.15 17:05 Сейчас в теме
7. Светлый ум 406 02.02.15 10:10 Сейчас в теме
К этой же теме хорошо было бы дописать удаление старых БекАпов, ибо место не резиновое. Не сталкивались с такой задачей?
Было бы интересно посмотреть на реализацию.
8. Nicholas 888 02.02.15 14:03 Сейчас в теме
(7) Светлый ум, при желании и достаточном времени можно и такой задачей заняться.
Думаю ничего сложно в этом нет. Будет что-то типа (на практике не проверял):

FORFILES /P "%BACKUP_DIR%" /S /D -1 /C "CMD /C IF @ISDIR==FALSE DEL /F /Q "%BACKUP_DIR%@REALPATH""

Теоретически этот код должен удалять все файлы старше одного дня.
Светлый ум; +1 Ответить
9. artbear 1448 10.02.15 00:12 Сейчас в теме
Без обид, но очередной велосипед.
Батник не дает ту свободу обработки, что дает более мощный скриптовый язык :(
Где обработка ошибок?
Много еще граблей сломаешь на этом пути :(
Nicholas; +1 Ответить
10. Nicholas 888 10.02.15 09:11 Сейчас в теме
(9) artbear, не претендую на оригинальность, ничего сложного, ничего особо нового - стандартные механизмы 1С. Но, в данный момент, эти батники меня очень спасают от рутинной работы. Если есть примеры скриптов с более богатым функционалом и обработкой ошибок, подалитесь, пожалуйста.
11. jdo 108 15.03.15 17:18 Сейчас в теме
(10) да пожалуйста. Мне не жалко. http://infostart.ru/public/138493/ . Этими скриптами я схранял 32 базы. Половина Бухгалтерия, половина Зряплата, всё это выкладывалось на ФТП, а через 62 дня оставляло один: первый за месяц. И всё это с обработкой ошибок.
12. jdo 108 15.03.15 17:39 Сейчас в теме
(9) artbear, сейчас пишу на JScript-е backUp + updater на основании 1С-кой обработки ОбновлениеКнфигурации. Цель: создать кроссплатформенный скрипт для автоматического архивирования и обновления нескольких 1С информационных баз (ИБ). Разработка приближается к логическому завершению через неделю. Затем тест на реальных ИБ, надеюсь к началу следующего месяца получу не только рабочую версию, но и оттестированную. Приближаясь к завершению я осознал, что скрипт на базе jscript кроссплатформенным не получится из-за отсутствия встроенных возможностей работы с XML. После отладки придется переводить на Perl. Для кроссплатформенности в Linux для замены COM они (1C-ники) разработали RAS/RAC (Remote Administratiorn Server/Remote Administration Client), а вот для конфтгураций на платформе 8.2 они уже этого делать не будут. Хорошо бы для ЗапретитьРаботуПользователей/РазрешитьРаботуПользователей имплантировать соответствующие функции web-сервиса в библиотеку стандартных подсистем (БСП), а не СОМ соединения, типа DenyUsersWork/AllowUsersWork. Но это надо просить 1С-ников тем у кого есть подписка на поддержку (ИТС). :-(
Nicholas; +1 Ответить
13. artbear 1448 20.03.15 00:13 Сейчас в теме
(12) ИМХО лучше юзать 1Script, чем Perl :)
ХМЛ есть, работу с процессами поддерживает, ЗИП есть, много чего есть.
Мы уже много скриптов с автором Андреем (EvilBeaver) понаписали, уже в реальной эксплуатации для нескольких проектов разных команд.
14. DexterMorgan777 3 07.05.15 13:10 Сейчас в теме
Спасибо, очень помог ваш пример.
15. michawin 04.09.15 11:31 Сейчас в теме
Здравствуйте ! Не обновляется конфигурация базы данных , может ли быть из за платформы 8.3.6.2100, пробывал также на 8.3.5? Не проверяли?( 6-ой пункт). Если "ручками" зайти в конфигуратор и нажать F7 ,то обновляется без проблем.
16. Nicholas 888 04.09.15 17:04 Сейчас в теме
(15) Нет, у меня сейчас такой же релиз. Работает отлично. Что в лог файле? Когда обновляете по F7, предупреждений никаких нет?
17. michawin 07.09.15 05:45 Сейчас в теме
Да есть одно не критичное предупреждение, из за него? Никак не обойти?
18. Nicholas 888 07.09.15 06:29 Сейчас в теме
(17) Исправьте его и в следующий раз все будет работать.
19. michawin 07.09.15 07:11 Сейчас в теме
Да, согласен, все сработало , спасибо !
20. Nicholas 888 07.09.15 11:31 Сейчас в теме
21. Shaldryn 18.10.15 15:30 Сейчас в теме
Автоматическое обновление нетиповой? И как это вы так автоматизировали? Он сам сравнение и объединение делает?
22. TMV 14 18.10.15 15:53 Сейчас в теме
(21) Shaldryn,"Чукча - не читатель, чукча - писатель".
порядка пятидесяти не типовых баз данных 1С, но с одинаковой конфигурацией
Автоматом обновляется N баз с уже подготовленным CF.
А если интересуетесь
Автоматическое обновление нетиповой?
, то вам Сюда, например.
23. Nicholas 888 19.10.15 07:04 Сейчас в теме
(21) Shaldryn, для обновления типовых есть другие механизмы, попроще. А здесь вы сами подготавливаете конфигурацию обновления, кладете ее в определенную папку, запускаете скрипт и он сам делает все рутинные действия по резервному копированию, обновлению и пр.
Оставьте свое сообщение