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

Системный администратор IT и автоматизация бизнеса
← На главную

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

Проанализируем причины возникновения этой проблемы и разберем проверенные практические варианты настройки автоматического бэкапа файловой базы 1С v8.

Причины блокировки файловой базы и особенности работы архиваторов

Выясним, почему стандартные средства архивации не всегда справляются с файловой базой:

  1. Отсутствие централизованного агента кластера: В отличие от клиент-серверного режима (MS SQL или PostgreSQL), в файловом варианте нет службы сервера 1С, способной принудительно завершить сеанс по команде администратора.
  2. Блокировка на уровне файловой системы: Запущенные процессы 1cv8.exe или 1cv8c.exe на ПК пользователей удерживают открытый хэндл (handle) файла 1Cv8.1CD через сетевой протокол SMB, из-за чего стандартное копирование ОС завершается ошибкой.
  3. Ограничения штатных механизмов выгона пользователей: Программное завершение работы пользователей опирается на внутренний таймер клиентского приложения. Если у пользователя открыто модальное окно или процесс завис, стандартный механизм выгона не сработает.

Способ 1. Архивация открытого файла с помощью утилиты 7-Zip (флаг -ssw)

Рассмотрим вариант архивации базы без предварительного принудительного закрытия сеансов пользователей. Консольная версия архиватора 7-Zip (7za.exe) поддерживает специальный ключ -ssw (Compress shared files), который позволяет упаковывать файлы, даже если они открыты другими программами для записи.

Создадим командный файл (bat-скрипт) для регулярного запуска в Планировщике заданий Windows:


"C:\Program Files\7-Zip\7za.exe" a "D:\Backups\base_%DATE%.zip" -ssw "D:\1C_Bases\MyBase\1Cv8.1CD"

Проанализируем ключевые параметры данной команды:

  1. a — команда добавления элементов в архив.
  2. -ssw — ключ, предписывающий архиватору упаковку файлов, захваченных другими процессами.
  3. Путь к исполняемому файлу архиватора и пути к каталогам не должны содержать ошибок; при наличии пробелов в путях обязательно оборачиваем их в двойные кавычки.

Способ 2. Автоматическое завершение сессий на уровне операционной системы

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

Вариант А: Сброс сетевых сессий команды net session

Перед запуском архиватора выполняется сброс открытых сетевых подключений к общей папке базы данных. В скрипт архивации добавляем команду очистки сессий:


net session /delete /y
"C:\Program Files\7-Zip\7za.exe" a "D:\Backups\base_%DATE%.zip" "D:\1C_Bases\MyBase\1Cv8.1CD"

Вариант Б: Работа в режиме удаленного рабочего стола (RDP)

Если пользователи работают на терминальном сервере, перед началом копирования можно принудительно завершить процессы сеансов 1С с помощью утилиты taskkill:


taskkill /F /IM 1cv8.exe
taskkill /F /IM 1cv8c.exe
"C:\Program Files\7-Zip\7za.exe" a "D:\Backups\base_%DATE%.zip" "D:\1C_Bases\MyBase\1Cv8.1CD"

Также рекомендуется настроить Групповые политики (GPO) терминального сервера, ограничивающие максимальное время неактивности (Idle) и состояние отключенных сессий (Disconnected).

Вариант В: Перезагрузка сервера по расписанию

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

  1. В 23:00 выполняется перезагрузка системы: shutdown /r /f /t 0
  2. В 23:15 планировщик запускает стандартный скрипт архивации файла 1Cv8.1CD.

Способ 3. Остановка веб-сервера (при публикации базы через IIS / Apache)

Посмотрим на решение ситуации, когда доступ пользователей к файловой базе организован через веб-сервер (Apache или IIS). В этом случае процесс веб-сервера монопольно обращается к файлу 1Cv8.1CD.

Для корректной архивации достаточно временно остановить службу веб-сервера на время копирования:


net stop W3SVC
"C:\Program Files\7-Zip\7za.exe" a "D:\Backups\base_%DATE%.zip" "D:\1C_Bases\MyBase\1Cv8.1CD"
net start W3SVC

Для веб-сервера Apache вместо W3SVC указывается имя соответствующей службы (например, httpd).

Критически важные предупреждения о целостности данных

Обратим внимание на важные технические нюансы при выборе метода резервного копирования:

  1. Логическая целостность данных: Архивирование файла 1Cv8.1CD «на лету» (при помощи флага -ssw или копирования занятого файла) не гарантирует логическую целостность структуры. Если в момент снимка базы пользователь проводил документ или записывал транзакцию, архивный файл может содержать незавершенные записи.
  2. Недопустимость регулярного использования выгрузки .dt в качестве единственного бэкапа: Файл выгрузки .dt предназначен для переноса конфигурации и данных между различными СУБД, но не является физическим дампом базы. При наличии повреждений в структуре 1Cv8.1CD выгрузка в .dt может пройти успешно, но последующее восстановление из этого файла завершится критической ошибкой.
  3. Проверка структуры базы: При регулярном аварийном завершении процессов 1С (через taskkill или перезагрузку) обязательно запланируйте периодическую проверку файла базы с помощью утилиты chdbfl.exe.
← На главную