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

20.01.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Update.bat
.bat 2,63Kb
29
29 Скачать (1 SM) Купить за 1 850 руб.

Выковал я из стали 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 обновление резервное копирование

См. также

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

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

6000 руб.

06.11.2012    72805    627    45    

85

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

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

1200 руб.

03.09.2014    15707    21    6    

27

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

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

04.12.2023    9445    n_mezentsev    15    

27

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

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

07.10.2022    28652    sapervodichka    37    

147

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

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

1 стартмани

25.08.2022    5737    3    Gnom-Gluck    6    

7

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

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

1 стартмани

02.06.2022    4692    3    Giblarium    12    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ololoanonim 3 20.01.15 12:13 Сейчас в теме
2. mmoozzgg 20.01.15 13:39 Сейчас в теме
3. Nicholas 902 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 902 21.01.15 13:46 Сейчас в теме
6. chmv 28.01.15 17:05 Сейчас в теме
7. Светлый ум 416 02.02.15 10:10 Сейчас в теме
К этой же теме хорошо было бы дописать удаление старых БекАпов, ибо место не резиновое. Не сталкивались с такой задачей?
Было бы интересно посмотреть на реализацию.
8. Nicholas 902 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 1563 10.02.15 00:12 Сейчас в теме
Без обид, но очередной велосипед.
Батник не дает ту свободу обработки, что дает более мощный скриптовый язык :(
Где обработка ошибок?
Много еще граблей сломаешь на этом пути :(
Nicholas; +1 Ответить
10. Nicholas 902 10.02.15 09:11 Сейчас в теме
(9) artbear, не претендую на оригинальность, ничего сложного, ничего особо нового - стандартные механизмы 1С. Но, в данный момент, эти батники меня очень спасают от рутинной работы. Если есть примеры скриптов с более богатым функционалом и обработкой ошибок, подалитесь, пожалуйста.
11. jdo 109 15.03.15 17:18 Сейчас в теме
(10) да пожалуйста. Мне не жалко. http://infostart.ru/public/138493/ . Этими скриптами я схранял 32 базы. Половина Бухгалтерия, половина Зряплата, всё это выкладывалось на ФТП, а через 62 дня оставляло один: первый за месяц. И всё это с обработкой ошибок.
12. jdo 109 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 1563 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 902 04.09.15 17:04 Сейчас в теме
(15) Нет, у меня сейчас такой же релиз. Работает отлично. Что в лог файле? Когда обновляете по F7, предупреждений никаких нет?
17. michawin 07.09.15 05:45 Сейчас в теме
Да есть одно не критичное предупреждение, из за него? Никак не обойти?
18. Nicholas 902 07.09.15 06:29 Сейчас в теме
(17) Исправьте его и в следующий раз все будет работать.
19. michawin 07.09.15 07:11 Сейчас в теме
Да, согласен, все сработало , спасибо !
20. Nicholas 902 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 902 19.10.15 07:04 Сейчас в теме
(21) Shaldryn, для обновления типовых есть другие механизмы, попроще. А здесь вы сами подготавливаете конфигурацию обновления, кладете ее в определенную папку, запускаете скрипт и он сам делает все рутинные действия по резервному копированию, обновлению и пр.
Оставьте свое сообщение