gifts2017

Просто и сердито. Архивирование (backup) типовых конфигураций 1С 8.2, 8.3

Опубликовал Роман Иванов (Prelude) в раздел Администрирование - Архивирование (backup)

После эксплуатации различных "бесплатных" обработок и скриптов решил написать свой cmd-файл для ежедневного архивирования баз 1С.
Работает на конфигурациях, где есть процедуры "ЗавершитьРаботуПользователей" и "РазрешитьРаботуПользователей" (т.е. во всех типовых, в нетиповые данные модули можно скопировать из типовых).
Сохраняет файлы как локально так и на удаленном файловом сервере. Автоматически удаляет старые архивы и копирует на удалённый сервер отсутствующие.
Расписание задается установкой соответствующего задания (запуска cmd-файла по времени) в планировщике задач Windows.
Для борьбы с зависшими сеансами, рекомендуется настроить в режиме конфигуратора параметры информационной базы: "Время засыпания пассивного сеанса" и "Время завершения спящего сеанса".

 

Тескт CMD-файла в кодировке WIN:

@echo off
SET SRV=localhost
SET BASE=UT82
SET User1C=Automat
SET PWDUser1C=Automat
SET BackUpPath=F:\BackUpDataBase\“’_10.3
SET BackUpPath2=\\SRV_BackUp\Backup_1C\“’_10.3
SET Days_Archive=365
SET Days_Archive2=30
SET DriveNet=U:
SET UserNet=Domen\User_SRV_BackUp
SET PWDUserNet=PWD_User_SRV_BackUp

SET FileTime=%TIME:~0,-3%
SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%

call "%odinCdir%\1cv8.exe" ENTERPRISE  /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"‡ ўҐаиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
call "%odinCdir%\1cv8.exe" DESIGNER /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /UC"Љ®¤ђ §аҐиҐ­Ёп" /DumpIB "%BackUpPathString%"
call "%odinCdir%\1cv8.exe" ENTERPRISE  /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"ђ §аҐиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
forfiles /P "%BackUpPath%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive%
NET USE %DriveNet% %BackUpPath2% /USER:%UserNet% %PWDUserNet%
robocopy "%BackUpPath%" "%DriveNet%" "*.dt" /MAXAGE:%Days_Archive2% /Z /R:5
ping -5 127.0.0.1
forfiles /P "%DriveNet%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive2%
ping -5 127.0.0.1
NET USE %DriveNet% /DEL /Y

Описание строк файла:

SET SRV=localhost - путь к серверу 1С
SET BASE=UT82 - имя базы на сервере 1С
SET User1C=Automat - имя пользователя с правами администратора
SET PWDUser1C=Automat - пароль пользователя с правами администратора
SET BackUpPath=F:\BackUpDataBase\“’_10.3 - путь к папке для архивирования на локальном компьютере
SET BackUpPath2=\\SRV_BackUp\Backup_1C\“’_10.3 - путь к папке для архивирования на удаленном компьютере
SET Days_Archive=365 - число дней хранения архивов на локальном компьютере
SET Days_Archive2=30 - число дней хранения архивов на удаленном компьютере
SET DriveNet=U: - имя подключаемого диска для пути BackUpPath2
SET UserNet=Domen\User_SRV_BackUp - пользователь для доступа к удаленному серверу архивирования
SET PWDUserNet=PWD_User_SRV_BackUp - пароль пользователя для доступа к удаленному серверу архивирования
Блок получения пути и имени файла архива по имени базы 1С, даты и времени архивирования:

SET FileTime=%TIME:~0,-3%

SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%
Вызов 1С для завершения работы пользователей (odinCdir - глобальная переменная - путь к папке 1С\bin):
call "%odinCdir%\1cv8.exe" ENTERPRISE  /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"‡ ўҐаиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
Вызов 1С для архивирования:
call "%odinCdir%\1cv8.exe" DESIGNER /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /UC"Љ®¤ђ §аҐиҐ­Ёп" /DumpIB "%BackUpPathString%"
Вызов 1С для разрешения работы пользователей:
call "%odinCdir%\1cv8.exe" ENTERPRISE  /S"%SRV%\%BASE%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"ђ §аҐиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
Удаление файлов из папки "BackUpPath" с датой больше "Days_Archive" дней:
forfiles /P "%BackUpPath%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive%
Подключение сетевого диска (необходимо т.к. forfiles - не работает с UNC-путями):
NET USE %DriveNet% %BackUpPath2% /USER:%UserNet% %PWDUserNet%
Копирование *.dt-файлов на удаленный сервер из локального каталога архивирования с датой не старше дней "Days_Archive2" (вдруг их там кто-то случайно подтёр :) ):
robocopy "%BackUpPath%" "%DriveNet%" "*.dt" /MAXAGE:%Days_Archive2% /Z /R:5
ping -5 127.0.0.1 - пауза
Удаление файлов из папки "BackUpPath2" с датой больше "Days_Archive2" дней:
forfiles /P "%DriveNet%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive2%
ping -5 127.0.0.1 -пауза
NET USE %DriveNet% /DEL /Y - отключение сетевого диска

______________________________________________________________________________

Пример архивирования для файловой базы 1С:

SET BASE_PATH=F:\BASE82\BP82_Extern
SET BASE=BUH_Extern
SET User1C=Automat
SET PWDUser1C=Automat
SET BackUpPath=F:\BackUpDataBase\ЃгеЈ «вҐаЁп_2.0_(ў­Ґи­ЁҐ)
SET BackUpPath2=\\SRV_BackUp\Backup_1C\ЃгеЈ «вҐаЁп_2.0_(ў­Ґи­ЁҐ)
SET Days_Archive=365
SET Days_Archive2=30
SET DriveNet=U:
SET UserNet=Domen\User_SRV_BackUp
SET PWDUserNet=PWD_User_SRV_BackUp

SET FileTime=%TIME:~0,-3%
SET FileTime=%FileTime::=%
SET FileTime=%FileTime: =0%
SET BackUpFileName=%BASE%-%date:~-4%%date:~3,2%%date:~0,2%-%FileTime%.dt
SET BackUpPathString=%BackUpPath%\%BackUpFileName%

call "%odinCdir%\1cv8.exe" ENTERPRISE  /F"%BASE_PATH%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"‡ ўҐаиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
call "%odinCdir%\1cv8.exe" DESIGNER /F"%BASE_PATH%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /UC"Љ®¤ђ §аҐиҐ­Ёп" /DumpIB "%BackUpPathString%"
call "%odinCdir%\1cv8.exe" ENTERPRISE  /F"%BASE_PATH%" /WA- /N"%User1C%" /P"%PWDUser1C%" /DisableStartupMessages /C"ђ §аҐиЁвмђ Ў®вгЏ®«м§®ў вҐ«Ґ©" /UC"Љ®¤ђ §аҐиҐ­Ёп"
forfiles /P "%BackUpPath%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive%
NET USE %DriveNet% %BackUpPath2% /USER:%UserNet% %PWDUserNet%
robocopy "%BackUpPath%" "%DriveNet%" "*.dt" /MAXAGE:%Days_Archive2% /Z /R:5
ping -5 127.0.0.1
forfiles /P "%DriveNet%" /M *.dt /c "cmd /c del @path /F /Q" /D -%Days_Archive2%
ping -5 127.0.0.1
NET USE %DriveNet% /DEL /Y

* - Вопросы с кодировкой (русскими именами папок) решаются с помощью Far (клавиша F8 - смена кодировки) или Word (файл открывается с кодировкой MS-DOS)

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Куджо Колтовский (Cujoko) 19.06.15 15:41
Это получается, нужно изгонять пользователей из базы, а также база выгружается в dt. Ладно, пусть dt, но разве удобно каждый раз выгонять людей?
2. Михаил Кончаренко (Anchoret) 19.06.15 15:58
Думаю, что в большинстве случаев по ночам никто не работает, выполняется по расписанию, так что и выгонять некого.
3. Роман Иванов (Prelude) 19.06.15 22:28
(1) Cujoko,
1. Чем Вам не нравится dt?
2. А у Вас типовые конфигурации выгружаются механизмами 1С, когда там находятся пользователи?
4. Александр Аляев (alyaev.a.v) 20.06.15 23:11
Как обстоят дела с невыгоняемыми пользователями,которых нет в активных но висят в консоли кластера,висящие фоновые?
5. Роман Иванов (Prelude) 21.06.15 13:09
(4) alyaev.a.v,
Я использую данную процедуру выгрузки и настроил на сервере 1С (перезапуск сервисов каждые 2 часа). Платформа 8.3.5.1570. После этого проблем с зависшими сеансами не возникает.

P.S. Мотивом к написанию этого cmd-файла и были проблемы с зависшими сеансами.
Кстати, попробуйте, когда в базе висят зависшие сеансы, вручную сделать бэкап (через Конфигуратор), после выгрузки сеансы зависшие исчезнут.
6. Сергей Галюк (dj_serega) 21.06.15 19:58
(3) Prelude,
1. Чем Вам не нравится dt?

Тем что это не архив базы. А копия, которая может не развернуться.
Я использую данную процедуру выгрузки и настроил на сервере 1С (перезапуск сервисов каждые 2 часа). Платформа 8.3.5.1570. После этого проблем с зависшими сеансами не возникает.

А сколько максимум пользователей активных?
Может лучше настроить параметры "спящих" сеансов?
7. Роман Иванов (Prelude) 22.06.15 08:20
(6) dj_serega,
1. Чем архив отличается от копии в вашем понимании? Чем стандартный механизм разработчика хуже всяких поделок? Если Вы совсем обезопаситься хотите, то архивируйте средствами SQL-баз.
Я за 6 лет эксплуатации 1С 8.х ни разу не столкнулся, чтобы dt-файл не загрузился.
2. В рабочее время от 20-40 человек.
А смысл настраивать спящие сеансы? Их в принципе надо убирать, на мой взгляд.

P.S. Коллеги, я Вас не призываю пользоваться тем, что я написал. И не сказал, что мой механизм лучший. Я показал, как бэкап базы делается механизмами Windows, и при необходимости (стандартными механизмами 1С, которым обучают на начальных курсах), восстанавливается пользователями, при этом без покупки и скачивания поделок.
8. Сергей Галюк (dj_serega) 22.06.15 12:19
(7) Prelude,
1. Чем архив отличается от копии в вашем понимании? Чем стандартный механизм разработчика хуже всяких поделок? Если Вы совсем обезопаситься хотите, то архивируйте средствами SQL-баз.
Я за 6 лет эксплуатации 1С 8.х ни разу не столкнулся, чтобы dt-файл не загрузился.

У меня было такое. А было еще и такое что в бд ошибка, выгрузили загрузили - нет ошибки. Было что выгрузили как архив, БД "слетела", загрузили и еще больше ошибок.
Вот ссылка по рекомендациям 1С.
Итого:
1. Если файловая тогда нужно копировать файл бд и паковать архиватором.
2. Если клиент-серверная тогда средствами SQL.
2. В рабочее время от 20-40 человек.
А смысл настраивать спящие сеансы? Их в принципе надо убирать, на мой взгляд.

У нас были проблемы со "спящими" но настроив их параметры проблемы не было. Получается они "тушаться" средствами 1С (без перезагрузки серверов и агентов)
P.S. Коллеги, я Вас не призываю пользоваться тем, что я написал. И не сказал, что мой механизм лучший.

Я не против. Механизм хороший. Спасибо за идею и публикацию :) Но, имхо, лучше доработать под рекомендации 1С ;)
9. Роман Иванов (Prelude) 22.06.15 14:12
(8) dj_serega,
По Вашей ссылке: "..., однако такой вариант его использования обладает рядом недостатков. Основным недостатком такого способа создания резервной копии является необходимость использования однопользовательского режима для осуществления этой операции. При большом объеме информационной базы перерыв в работе пользователей может быть достаточно велик, что не всегда приемлемо."
У меня ночью в базе никого нет.
Про SQL я Вам тоже самое говорил.
10. Роман Иванов (Prelude) 22.06.15 15:56
(8) dj_serega,
У нас были проблемы со "спящими" но настроив их параметры проблемы не было. Получается они "тушаться" средствами 1С (без перезагрузки серверов и агентов)

Подскажите где Вы их настраивали?
11. Роман Иванов (Prelude) 23.06.15 10:08
(10) Prelude,
dj_serega,
У нас были проблемы со "спящими" но настроив их параметры проблемы не было. Получается они "тушаться" средствами 1С (без перезагрузки серверов и агентов)

Подскажите где Вы их настраивали?

Все нашел, в Конфигураторе в "Параметрах информационной базы". Я их пару лет назад выставил :)
12. Сергей Галюк (dj_serega) 23.06.15 12:08
(9) Prelude,
Основным недостатком

Основным да. А второстепенными это и крах БД и невосстановимые ошибки. Вроде на мисте обсуждалось когда-то. Там и ссылки видел.
13. Роман Иванов (Prelude) 23.06.15 15:17
(12) dj_serega,
Ежедневный бэкап средствами SQL и dt, плюс хранение на разных серверах, подобную паранойю должен сводить на нет.
PS: "Это к контрадмиралу, он Атлантиду видел." (ДМБ)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа