1C_SafeArchive v1.3 — безопасное резервное копирование файловых баз 1С

Как известно файловые базы 1С очень «ламучие» и должны сопровождаться частым бэкапом.

Здесь же и таится опасность, о которой администратор 1С может и не подозревать, конечно, пока в очередном «аврале» не попробует выполнить восстановление ИБ.

Да, как вы уже догадались, архив «битый», DT-ха не хочет загружаться или еще вагон и телега ошибок после так называемого «теневого копирования» какой ни будь именитой программы по резервному копированию баз 1С.

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

Да, что говорить, «боль» администрирования файловых 1С знакома всем )

bad backup

Часто базы оказываются сломанными, и даже «Тестирование и исправление» порой не дает нужного результата.

Конечно лучшее, что можно здесь предпринять это правильный  подход к созданию самого бэкапа в «файле»!

Собственно, пользоваться той кучей скриптов, которыми мы обычно снимаем копии, мягко говоря, не совсем удобно, да и не безопасно.

А программные аналоги стоят немало, и также не работают как от них ожидаешь.

 

Так я в 2024 — том сел снова писать скрипт ), который будет делать прозрачно и безопасно то, что от него требуется, а именно корректный бэкап файловой базы 1С.

1C_SafeArchive – скрипт для создания безопасной резервной копии файловой базы 1С.

1C_SAFEARCHIVE V1.3
1C_SAFEARCHIVE V1.3

 

download

Скачать файлы можно только после регистрации


 

Работать со скриптом очень просто, достаточно заполнить всего пару основных параметров, таких как расположения базы, куда копировать и пользователя для штатного завершения сеансов 1С – все!

Вкратце, о работе крипта:

Создает резервную копию используя бесплатный архиватор 7-zip и штатные механизмы завершения работы в 1С, исключительно при необходимости, применяет принудительное завершение процессов 1С. (Причем все гибко вы сможете настроить под себя).

Также меня всегда бесили битые копии, которые не редко создают как программы, так и скрипты, здесь это исключено, разве что кто-то грубо прервёт работу скрипта )

 

Описание работы скрипта:

  1. Настройки скрипта:
    • Определены основные параметры, такие как расположение базы данных 1С (base_location), имя пользователя в 1С (user_name), пароль пользователя (user_pass), расположение платформы 1С (platforma_1C), расположение утилиты 7-Zip (a7z), и т.д.
  2. Получение текущей даты и времени:
    • Скрипт использует PowerShell для получения текущей даты и времени, сохраняя их в переменной current_datetime.
  3. Очистка лога:
    • Предыдущий лог очищается перед выполнением скрипта.
  4. Завершение процессов 1С:
    • Если опция taskkill_on установлена в «yes», скрипт пытается завершить процессы 1С командой taskkill перед выполнением резервного копирования.
    • Если опция perform_taskkill также установлена в «yes», то только после успешного штатного завершения процессов 1С командой «%platforma_1C%» ENTERPRISE /F%base_location% /N»%user_name%» /P»%user_pass%» /WA- /CЗавершитьРаботуПользователей /UCКодРазрешения /DisableStartupMessages
      , скрипт принудительно завершает указанный процесс (process_mask) с использованием taskkill.
  5. Блокировка входа в базу 1С:
    • Вход в базу 1С блокируется, и выполняется штатное завершение сеансов 1С.
    • «%platforma_1C%» ENTERPRISE /F%base_location% /N»%user_name%» /P»%user_pass%» /WA- /CЗавершитьРаботуПользователей /UCКодРазрешения /DisableStartupMessages 
  6. Создание бэкапа:
    • Скрипт использует 7-Zip для создания архива (бэкапа) базы данных 1С в указанное место (kuda) с именем, включающим текущую дату и время.
    • for /r «%base_location%» %%i in (%file_filter%) do (
      «%a7z%» a «%kuda%\%backup_name%_%current_datetime%.7z» «%%i» >> «%~dp0full_log.txt» 2>&1
      )
  7. Удаление старых бэкапов:
    • Скрипт удаляет старые бэкапы, оставляя только заданное количество (backup_old).
  8. Принудительное завершение процессов 1С:
    • Если опция perform_taskkill установлена в «yes» и процессы 1С успешно завершены командой taskkill, скрипт принудительно завершает  процессы 1С что могли остаться, например «Конфигуратор» у разработчика 1С (process_mask) с использованием taskkill.
  9. Разрешение входа пользователям:
    • Если ранее был заблокирован вход в базу 1С, скрипт разрешает вход пользователям.
  10. Логирование:
    • Весь процесс логируется в файл txt, включая информацию о завершении процессов, создании бэкапа и другие шаги. Лог файл содержит дату и время для каждого события.
  11. Обработка ошибок:
    • В случае ошибки при создании бэкапа, скрипт удаляет неудачный бэкап и записывает соответствующую информацию в лог.
  12. Завершение скрипта:
    • Скрипт завершает работу, записывая соответствующую информацию в лог.

 

Без проблем батник будет работать в планировщике windows, и на автомате создавать резервные копии ваших файловых баз 1С.

 

ВАЖНО! Если работа скрипта завершилась аварийно, удалите лишние файлы в каталоге ИБ, чтоб разблокировать доступ к ИБ (Достаточно удалить 1Cv8.cdn) из папки (или все кроме 1Cv8.1CD).

2024-02-28_22-31-04

ВИДЕО КАК НАСТРАИВАТЬ СКРИПТ:

Что нового на версии 1.1:

  • Более простая настройка скрипта
  • Бэкап выполняется путем копирования только файла базы 1Cv8.1CD

Что нового на версии 1.2:

  • Добавлена возможность корректного завершения сеансов 1С на веб сервере Apache

Что нового на версии 1.3:

  • Путь к лог файлу можно указать в переменной

Пишите в комментарии, что используете вы для резервного копирования баз 1С, конечно, буду рад предложениям по улучшению работы скрипта!

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С >>>

52 комментария к “1C_SafeArchive v1.3 — безопасное резервное копирование файловых баз 1С”

    • Ну вот мы и увидили ваш скрипт для бэкапа файловых баз 1С, спасибо! От всего сообщества питонистов ) Groovy и Jenkins’е и прочей чепухи которую вы здесь написали, спасибо. Пока не понял зачем вы потратили мое время и свое также, вот это вопрос конечно.

  1. Жаль нет функционала по архивированию файловых баз, которые работают с публикацией в веб через apache или IIS. Да и пользователи, которые работают через локальную сеть не выбьются.

    • Пароль можно не указывать но пользователь должен быть администратор в базе 1с у вас если это не так то завершение сеансов не произойдет, а если у вас у пользователя что в базе 1С имеет права администратора и нет пароля тогда это уже серьёзный вопрос безопасности!

      • Когда компьютер в сети, да еще и с выходом в интернет, то да, без паролей никак нельзя, но если это отдельно стоящий компьютер без интернета, да и в базе работает один человек человек, то думаю можно (но не очень приветствуется) то и без пароля

  2. при запуске C:\Users\Администратор\Desktop\1C_SafeArchive_1_1>я╗┐
    «я╗┐» не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    вылезает окно 1с и пишет информационная база не найдена пытается её создать.
    Пути естественно все свои прописал.

  3. Доброго времени! Спасибо за статью! Подскажите, как реализовать один скрипт для нескольких файловых баз. Или если для каждой базы создать свой скрипт(а) и еще один скрипт(б), который будет запускать последовательно скрипты(а) с проверкой завершения предыдущего скрипта(а). Заранее спасибо!

    • Здравствуйте.

      Проще будет в планировщике зарядить в интервале несколько скриптов для каждой базы. Например есть 5 баз, тогда каждый час запускать новый скрипт для базы. 01:00 база 1 в 02:00 база два. И тд

      Если баз много, например больше 7-ми, я бы рекомендовал использовать тогда уже программу, тот же handy backup или эффектор сейвер.

  4. Привет, спасибо за скрипт и статью) Все работает штатно! Но: чтобы посмотреть логи на упаковку нескольких баз, пришлось отключать удаление лога в каждом скрипте, либо можно складывать их в разные папки, т.е. придется переделывать планировщик, но лень)) Поэтому пока просто отключил. Буду сам не забывать посматривать. Всего хорошего. Если что-то придумаете с этим, обязательно использую)))

  5. Добрый день! А можно посмотреть скрипт резервного копирования опубликованной базы на apache? Я мало в этом понимаю, но и жить хочется, а то бухгалтеры будут очень недовольны если 1С сломается. Базу опубликовал на apache, а как бэкап делать ума не хватает!))))

  6. Добрый день! попробовал сегодня скрипт, вот такой лог вывалил. Где я накосячил?
    Попытка заблокировать вход в базу 1С и вызов штатного завершения сеансов 1С…
    Процесс 1C с маской «1cv8» не найден.
    [2024-08-01_0839] Создаю бэкап…
    ‘»C:\Program Files\7-Zip\7z.exe»‘ is not recognized as an internal or external command,
    operable program or batch file.
    [2024-08-01_0839] Создание бэкапа завершилось с ошибкой: 9009
    [2024-08-01_0839] Скрипт завершился из-за сбоя при создании резервной копии.
    [2024-08-01_0839] Удаление неудачного бэкапа…
    Could Not Find D:\backUp4iki\SCripT\MyBackup_2024-08-01_0839.7z
    [2024-08-01_0839] …
    [2024-08-01_0839] Попытка разрешить вход в базу 1С
    [2024-08-01_0839] Вход в базу 1С разрешен
    [2024-08-01_0839] Скрипт завершил работу

  7. Я если я хочу делать backup всей базы (всего каталога) за исключением содержимого каталога 1Cv8Log
    я модифицировал строку
    «%a7z%» a «%kuda%\%backup_name%_%current_datetime%.7z» «%base_location%» -xr!*lgf -xr!*lgp
    но получаю ошибку
    Command Line Error:
    Incorrect wildcard type marker
    r*lgp

    подскажите пожалуйста , что нужно подправить
    что нужно

    • Здравствуйте.
      Надо разбираться. Напишите мне на почту team@kuharbogdan.com отправьте ваш вариант скрипта, я посмотрю.

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

  8. мне помогло следующее изменение
    «C:\Program Files\7-Zip\7z.exe» a «C:\1C\BackUp\1c_bases_2.0_2024-08-10_TEST.7z» «C:\1C\1c_bases 2.0\base.1CD» -xr^^!*lgp -xr^^!*lgp

    или удаление этих строк
    setlocal enabledelayedexpansion
    chcp 65001 > nul

    я не понял как это сработало, но помогло
    тестил на
    Windows 11 Eng and Windows Server 2016 Rus

  9. Здравствуйте! После завершение скрипта, в каталоге базы остаются файлы (1Cv8.CL, 1Cv8Tmp.1CD, 1Cv8Tmp.1CL) и не исчезают, можно ли сделать так, чтобы он полностью завершал работу в программе?

  10. Автору большое спасибо за скрипт. Как насчет сокрытия пароля пользователя в скрипте для автоматического, но безопасного резервного копирования файловых баз 1С?

  11. Добрый день, подскажите, этот скрипт сможет сделать беккап безопасный, если файловая база лежит на сервере в расшаренной папке, клиенты 1с подключаются со своих стационарных компьютеров (у них подключен сетевой диск на шару).
    Для отключения пользователей нет висящих процессов 1с на самом сервере…
    Думаю посмотреть в сторону временного закрытия шары, что думаете?

Оставьте комментарий

База знаний 1С