Резервное копирование БД 1С средствами батника и выгрузка файловой базы в dt

Публикация № 1178789

Администрирование - Администрирование данных 1С - Архивирование (backup)

бэкап копирование БД резервное выгрузка DT

Резервное копирование БД с помощью батника. Код батника совсем небольшой.

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

Был выбран самый простой способ - это сжать файл *.1cd средствами батника.

Код батника совсем небольшой

echo off
cls

rem -- Убивам процесс 1С если он такой есть
taskkill /f /im 1cv8c.exe 

rem --путь до архиватора
set path_7z="%programfiles%\7-Zip\7z.exe"

rem -- удаляем файлы больше 14 шт
dir *.7z /a:-D/b/o:-D > del_list_files.txt
for /F "skip=13" %%i in (del_list_files.txt) do (del /Q "%%i")
del del_list_files.txt
rem -----------------------------------------------

rem -- Данные пользователя
set user_1C="ПОЛЬЗОВАТЕЛЬ"
set pswd_1C="ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ"
rem -- Название базы
set name_base=НАЗВАНИЕ_БАЗЫ_БЭКАПА.7z
rem -- путь базы бэкапа
set name_base_backup="ПУТЬ_ЛОКАЛЬНОЙ_БАЗЫ"

setlocal

rem -- выгрузка базы данных
%path_7z% a -t7z -m0=LZMA2:x=9:fb=273:d=96m:mt=2 %name_base% %name_base_backup%

Батник можно подключить через TaskManager, стандартными средствами Windows и настроить расписание его выполнения. У своих клиентов используется везде, плюсом сделано копирование на ftp сервер баз со статическим ip

и отдельно скрипт выгрузки файловой базы в dt (кому чем пользоваться выбирает сам из религиозных побуждений)

echo off
cls

rem -- Убивам процесс 1С если он такой есть
taskkill /f /im 1cv8c.exe 

rem -- удаляем файлы старше 14 шт
dir *.dt /a:-D/b/o:-D > del_list_files.txt
for /F "skip=13" %%i in (del_list_files.txt) do (del /Q "%%i")
del del_list_files.txt
rem -----------------------------------------------

rem -- определяем какая платформа 1С стоит х86 или х64,
rem -- пути у них разные
IF EXIST "%programfiles%\1cv8\common\1cestart.exe" (
set path_1C="%programfiles%\1cv8\common\1cestart.exe"
) ELSE (
set path_1C="%programfiles(x86)%\1cv8\common\1cestart.exe"
)
rem -----------------------------------------------

rem -- Данные пользователя
set user_1C="ПОЛЬЗОВАТЕЛЬ"
set pswd_1C="ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ"
rem -- Название базы
set name_base=НАЗВАНИЕ_БАЗЫ_БЭКАПА.dt
rem -- путь базы бэкапа
set name_base_backup="ПУТЬ_ЛОКАЛЬНОЙ_БАЗЫ"

setlocal

rem -- выгрузка базы данных
%path_1C% CONFIG /F%name_base_backup% /N%user_1C% /P%pswd_1C% /DumpIB %name_base%

добавлено:

копирование файла созданного бакуп-файла

rem -- Путь локальный где лежит созданный бэкап
set path_bac_local="ПУТЬ_ДО_БАКУП_ФАЙЛА"

rem -- Название базы
set name_base=НАЗВАНИЕ_БЭКАПА_КОТОРЫЙ_КОПИРОВАТЬ.(7z/dt)

rem --Директория копирования файла
set copy_dir=ПУТЬ_КУДА_БУДЕМ_КОПИРОВАТЬ

rem Копируем файл 
xcopy %path_bac_local%%name_base% %copy_dir% /C /H /Y /R /I

 

Кому пригодился данный вариант, ставим звёздочку ))

Готовый файл прикреплён

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

Наименование Файл Версия Размер
Выгрузка файловой базы в DT через батник:

.bat 1,33Kb
1
.bat 1,33Kb 1 Скачать
Резервное копирование БД 1С средствами батника:

.bat 0,71Kb
1
.bat 0,71Kb 1 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zeegin 91 13.01.20 11:26 Сейчас в теме
Нарушение документации по эксплуатации писать как статью-рекомендацию - это очень плохо.

Рекомендации по организации резервного копирования информационной базы
https://its.1c.ru/db/metod8dev#content:2922:hdoc
dron-s; BigB; Reaper_1C; kuzyara; +4 Ответить
2. dron-s 16 13.01.20 11:48 Сейчас в теме
(1)
Нарушение документации по эксплуатации писать как статью-рекомендацию - это очень плохо.

и что там нарушено?
Иногда этот режим используют, также, для создания резервной копии информационной базы, однако такой вариант его использования обладает рядом недостатков. Основным недостатком такого способа создания резервной копии является необходимость использования однопользовательского режима для осуществления этой операции. При большом объеме информационной базы перерыв в работе пользователей может быть достаточно велик, что не всегда приемлемо.

написано что для ЛОКАЛЬНЫХ БАЗ и делается это вне рабочее время, почему и написано что настраивается через TaskManager в нужное время...
а для клиент-серверных вариантов баз конечно лучше использовать средства самого SQL черз этот метод.. хотя есть клиенты у которых база на SQL также выгружается в dt... клиенты при этом не работают в системе, потому что делается вне рабочее время...
а копировать базу весом 3-4 гига в файловой базе, каждый день, сами подумайте какой объём требуется да и времени чтобы стащить с магазина на ftp сервер базу раз в неделю???
9. capitan 1877 13.01.20 18:22 Сейчас в теме
(1) НЕ
Нарушение документации
, а нарушение рекомендации
На самом деле у 1С цель это сокращение нахождения базы в однопользовательском режиме, но есть еще одна цель - иметь рабочую копию, немаловажная.
При архивировании сторонними средствами она не выполняется, если база содержит ошибки, то с ними и сархивируется и возможно к тому моменту когда вы заметите кирдык, архивов живых уже не будет.
А выгрузка при наличии ошибок не произойдет и по вы будете иметь не актуальную но 100% рабочую копию.
Вот и решайте что вам важнее
Поэтому я убираю чей то минус своим плюсом, хотя конечно на плюс не тянет )
3. zeegin 91 13.01.20 11:59 Сейчас в теме
dt нужен для конвертации файловой в клиент-серверную или миграции между субд.
Резервную копию файловой надо делать архивированием 1CD файла и журнала регистрации, например так https://gist.github.com/zeegin/781e69927c214a6703073f99bd5f7265
4. dron-s 16 13.01.20 12:07 Сейчас в теме
(3)
dt нужен для конвертации файловой в клиент-серверную или миграции между субд.

не обязательно
Резервную копию файловой надо делать архивированием 1CD файла и журнала регистрации, например так https://gist.github.com/zeegin/781e69927c214a6703073f99bd5f7265

было до этого вот так
%path_7z% a -t7z -m0=LZMA2:x=9:fb=273:d=96m:mt=2 %name_base% %name_base_backup%

во первых, очень грузит комп, во вторых время на архив занимало до 1,5 часов, в третьих просто не рациональное использование ресурсов компа на котором делается архив
самым основным фактом было чтобы выгружать dt - это время создания и размер выгружаемого dt файла.. на базе 3,7 гига выгрузка в dt занимает 1,5-2 минуты, при этом как архивирование базы *.1cd более часа
5. zeegin 91 13.01.20 12:11 Сейчас в теме
(4) Ну может быть при каком-то частном случае конфигурации сервера это можно достичь)
Главное не говорите об этом на экзамене в 1С - сразу получите неуд и на пересдачу.
Просто уже столько раз написано - не делайте резервные копии выгрузкой dt - они для этого не предназначены. И все равно продолжают делать)
6. dron-s 16 13.01.20 13:10 Сейчас в теме
(5)
переделал под архивирование локальной базы средствами 7z архиватора
p.s. просьба минусы убрать )))
7. SerVer1C 357 13.01.20 13:16 Сейчас в теме
Ждём следующую статью "Восстановление БД 1С из резервной копии средствами батника".
BigB; dron-s; +2 Ответить
8. dron-s 16 13.01.20 13:27 Сейчас в теме
(7)
Ждём следующую статью "Восстановление БД 1С из резервной копии средствами батника".

смешно ))
10. dron-s 16 13.01.20 18:46 Сейчас в теме
в общем добавил два скрипта:
- первый на выгрузку файловой базы в DT батником
- второй на архивирование локальной базы архиватором 7z также через батник
выбирайте сами что кому нужнее
всё подключается через Task Manager
11. provadyuga 95 14.01.20 07:15 Сейчас в теме
Все просто и по делу. Приятно смотреть. Плюс.
Можно было бы еще добавить рассылку копий созданного архива по разным дискам/папкам, задействовав для этого xcopy.
12. dron-s 16 14.01.20 07:28 Сейчас в теме
(11)
сделал, добавил в описание ))
rem -- Путь локальный где лежит созданный бэкап
set path_bac_local="ПУТЬ_ДО_БАКУП_ФАЙЛА"

rem -- Название базы
set name_base=НАЗВАНИЕ_БЭКАПА_КОТОРЫЙ_КОПИРОВАТЬ.(7z/dt)

rem --Директория копирования файла
set copy_dir=ПУТЬ_КУДА_БУДЕМ_КОПИРОВАТЬ

rem Копируем файл 
xcopy %path_bac_local%%name_base% %copy_dir% /C /H /Y /R /I
Показать
13. v3rter 14.01.20 23:48 Сейчас в теме
Есть другая стратегия - копируем файл 1cd в некоторую временную папку, затем уже в ней жмём архиватором и/или выгружаем в dt.
Глядя на отсутствие кавычек вокруг полных путей к файлам и папкам, задам закономерный вопрос - на папках с пробелам и русскими буквами в именах проверяли?
14. dron-s 16 15.01.20 07:56 Сейчас в теме
(13)
копируем файл 1cd в некоторую временную папку,

для чего это лишнее телодвижение?
(13)
на папках с пробелам и русскими буквами в именах проверяли?

нет, не было такой потребности, но и так понятно для того этого нужно заключить в кавычки
15. KVIKS 77 15.01.20 23:46 Сейчас в теме
(14)
для чего это лишнее телодвижение?

В данном режиме не надо выгонять пользователе из базы, файловая база прекрасно копируется "нагорячую"
16. tsbelaton 02.06.20 13:13 Сейчас в теме
Пара вопросов:
1) зачем при копировании 1cd файла светить в батнике имя и пароль пользователя 1С?
2) судя по содержимому батника в описании уместно указать "разместить файл в каталоге, предназначенном для хранения архивов, он же copy_dir=ПУТЬ_КУДА_БУДЕМ_КОПИРОВАТЬ, запускать оттуда же", иначе выполнение подобного bat файла пох..ит в первом случае архивы в папке запуска - во втором dt файлы.
Оставьте свое сообщение