Почему не создается резервная копия файловой базы 1С по расписанию и как настроить архивацию?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При использовании типового механизма резервного копирования, встроенного в конфигурации на базе «1С:Предприятие 8», пользователи часто сталкиваются с ситуацией: расписание задано (например, каждый день в 20:00), путь к целевой папке указан, однако архивные копии так и не появляются. Выясним причину такого поведения и подробно разберем правильные способы настройки автоматического резервного копирования для файловых информационных баз.

Причина проблемы: особенности работы файловых баз 1С

Проанализируем архитектуру файлового режима работы «1С:Предприятия». В отличие от клиент-серверного варианта (SQL), где фоновые и регламентные задания запускаются службой сервера 1С независимо от наличия подключенных пользователей, в файловой базе регламентные механизмы не могут работать автономно.

Встроенное резервное копирование (механизм Библиотеки стандартных подсистем — БСП) работает по следующим правилам:

  1. Требуется активный сеанс: Чтобы сработало назначенное по времени регламентное задание, база данных обязательно должна быть запущена хотя бы у одного пользователя. Если в 20:00 все пользователи закрыли программу и ушли домой, внутренний планировщик 1С физически не может запуститься.
  2. Монопольный доступ: Для выполнения резервного копирования встроенный механизм пытается завершить работу всех пользователей и заблокировать базу. Если программа уже закрыта, триггер для инициализации этой процедуры отсутствует.

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

Способ 1. Пакетная выгрузка базы данных в файл .dt через Планировщик заданий

Рассмотрим запуск конфигуратора в пакетном режиме с помощью Планировщика заданий Windows (Task Scheduler). Этот способ позволяет автоматически сформировать файл информационной базы с расширением .dt.

Создадим командный файл (батник с расширением .bat или .cmd) следующего содержания:


@echo off
set PLATFORM="C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe"
set BASE_PATH="C:\1C_Bases\MyBase"
set BACKUP_DIR="D:\1C_Backups"
set USERNAME="Администратор"
set PASSWORD="SecretPassword"

for /f "tokens=1-4 delims=." %%a in ("%date%") do set BACKUPDATE=%%c-%%b-%%a
set BACKUP_FILE=%BACKUP_DIR%\Backup_%BACKUPDATE%.dt

%PLATFORM% DESIGNER /F %BASE_PATH% /N %USERNAME% /P %PASSWORD% /DumpIB %BACKUP_FILE% /UC "ПакетнаяВыгрузка"

Разберем параметры командной строки, которые мы использовали:

  1. DESIGNER — запуск платформы в режиме «Конфигуратор».
  2. /F — путь к каталогу с файловой информационной базой.
  3. /N и /P — логин и пароль пользователя с административными правами.
  4. /DumpIB — команда выгрузки базы в указанный файл .dt.
  5. /UC — код разрешения для подключения к базе, если на нее предварительно установлена блокировка соединений.

Важно: Для успешного выполнения выгрузки в базе не должно быть зависших сеансов других пользователей.

Способ 2. Прямое копирование и архивация файла 1Cv8.1CD (Рекомендуемый)

Необходимо учитывать, что файл выгрузки .dt предназначен в первую очередь для переноса конфигурации и данных между различными СУБД, а не для регулярного резервного копирования. Наиболее надежный способ сохранения файловой базы — создание прямой копии основного файла 1Cv8.1CD.

Разберем создание PowerShell-скрипта, который принудительно завершает незакрытые сеансы (процессы 1cv8.exe и 1cv8c.exe), упаковывает базу данных с помощью архиватора 7-Zip и удаляет копии старше 6 месяцев:


$SourcePath = "C:\1C_Bases\MyBase\1Cv8.1CD"
$BackupDir = "D:\1C_Backups"
$7ZipPath = "C:\Program Files\7-Zip\7z.exe"
$DateStr = Get-Date -Format "yyyy-MM-dd_HH-mm"
$ArchiveFile = "$BackupDir\BaseBackup_$DateStr.7z"

# Завершаем процессы 1С, чтобы снять блокировки с файлов
Get-Process -Name "1cv8", "1cv8c" -ErrorAction SilentlyContinue | Stop-Process -Force

# Создаем архив файла базы данных
if (Test-Path $SourcePath) {
    & $7ZipPath a -t7z -mx=5 $ArchiveFile $SourcePath
}

# Удаляем резервные копии старше 180 дней (6 месяцев)
$LimitDate = (Get-Date).AddDays(-180)
Get-ChildItem -Path $BackupDir -Filter "*.7z" | Where-Object { $_.CreationTime -lt $LimitDate } | Remove-Item -Force

Способ 3. Использование службы теневого копирования тома (VSS)

Если пользователи регулярно забывают закрывать программу на ночь, принудительное завершение процессов может привести к потере несохраненных данных пользователя. В такой ситуации наилучшим решением будет использование системы архивации с поддержкой VSS (например, встроенной службы архивации Windows Server Backup или специализированных утилит вроде Effector Saver).

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

Дополнительные рекомендации по хранению файлов и ротации

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

  1. Внешние тома хранения файлов: Если в базе данных включено хранение прикрепленных файлов (сканов, документов) на диске в отдельных томах, архивировать только файл 1Cv8.1CD или выгружать .dt недостаточно. Обязательно добавьте в скрипт резервного копирования директорию с файловыми томами.
  2. Права доступа к каталогам: Если архивы сохраняются на отдельный сетевой ресурс или сервер, убедитесь, что учетная запись, под которой запускается задание в Планировщике Windows, обладает полными правами на запись в целевой сетевой каталог.
  3. Тестирование восстановления: Периодически проверяйте созданные копии путем их разворачивания в тестовом каталоге, чтобы гарантировать целостность данных в случае аварии.
← На главную