Вопрос обеспечения сохранности данных в 1С является критически важным для любого системного администратора. Мы разберем основные методы автоматизации этого процесса, начиная от простых скриптов для файловых баз и заканчивая продвинутыми средствами систем управления базами данных (СУБД). Рассмотрим пошагово, как настроить надежную систему копирования, которая будет работать без участия человека.
Для небольших баз данных и файловых вариантов часто используется встроенная возможность платформы 1С:Предприятие запускаться в режиме конфигуратора для выгрузки информационной базы. Разберем, как создать исполняемый файл .bat, который можно добавить в планировщик заданий Windows.
Для реализации этого метода нам понадобится использовать параметры командной строки. Проанализируем стандартный синтаксис команды:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" DESIGNER /F "C:\Bases\MyBase" /N "Admin" /P "Password" /DumpIB "C:\Backups\Backup_%date%.dt" /DisableStartupMessages
В данном примере мы используем следующие ключи:
DESIGNER — запуск в режиме конфигуратора./F — путь к файловой базе (для клиент-серверного варианта используйте /S с указанием сервера и имени базы)./N и /P — имя пользователя и пароль с административными правами./DumpIB — команда на выгрузку базы в файл формата .dt./DisableStartupMessages — подавление диалоговых окон, которые могут остановить автоматический процесс.Важный нюанс: Перед выполнением выгрузки крайне желательно завершить работу всех пользователей. Для клиент-серверного варианта мы можем автоматизировать остановку и запуск службы агента сервера 1С, чтобы гарантированно разорвать все активные соединения:
net stop "1C:Enterprise 8.2 Server Agent"
net start "1C:Enterprise 8.2 Server Agent"
Если нам нужно более интеллектуальное управление (например, формирование имени файла с учетом дня недели или отправка уведомлений), мы можем применить VBScript. Рассмотрим пример скрипта, который подготавливает среду и запускает выгрузку:
Set WshShell = CreateObject("WScript.Shell")
' Путь к исполняемому файлу платформы
StrStart = """C:\Program Files (x86)\1cv82\8.2.13.202\bin\1cv8s.exe"" CONFIG "
' Строка подключения к базе
StrBase = "/S ServerName\BaseName "
' Параметры авторизации
StrUserParam = "/N ""BackupUser"" /P ""MySecretPass"" "
' Путь для сохранения с добавлением дня недели
StrDumpName = "D:\Backup\Base_" & DatePart("w", Date) & ".dt"
StrCallMethod = "/DumpIB " & StrDumpName
' Запуск процесса
WshShell.Run StrStart & StrBase & StrUserParam & StrCallMethod, 1, True
Set WshShell = Nothing
Такой скрипт позволяет избежать создания бесконечного количества копий, перезаписывая архивы недельной давности, что экономит место на диске.
Для крупных информационных систем выгрузка в формат .dt не является оптимальной. Во-первых, она требует монопольного доступа, во-вторых, процесс загрузки больших файлов .dt может занимать часы. Рассмотрим более надежный способ — использование SQL Server Management Studio (SSMS) и планов обслуживания (Maintenance Plans).
Проанализируем преимущества работы через СУБД:
.bak файла происходит в разы быстрее, чем из .dt.Выясним, как настроить автоматизацию через T-SQL скрипт, который можно запустить через SQL Server Agent:
DECLARE @DataBaseName SYSNAME = 'base1c8'
DECLARE @BackUpPath NVARCHAR(500)
SET @BackUpPath = 'C:\BACK_UP\' + @DataBaseName + '_' + FORMAT(GETDATE(), 'yyyyMMdd_HHmm') + '.bak'
BACKUP DATABASE @DataBaseName TO DISK = @BackUpPath WITH INIT, SKIP, STATS = 10
Этот скрипт создаст полную резервную копию базы данных с меткой времени. Для экономии места в современных версиях SQL Server рекомендуется добавлять параметр COMPRESSION.
Если ваш сервер работает под управлением Linux (например, CentOS или Ubuntu), мы будем использовать утилиту pg_dump. Разберем пример Bash-скрипта для автоматизации:
#!/bin/sh
BACKUP_DIR="/opt/backup/1cv8"
DATE=$(date +%F)
DB_NAME="production_base"
mkdir -p $BACKUP_DIR/$DATE
pg_dump -U postgres -Fc $DB_NAME > $BACKUP_DIR/$DATE/$DB_NAME.dump
# Удаление архивов старше 30 дней
find $BACKUP_DIR -type d -mtime +30 -exec rm -rf {} \;
Скрипт следует поместить в crontab для выполнения по расписанию. Обратите внимание на использование ключа -Fc — это кастомный формат PostgreSQL, который поддерживает сжатие и позволяет выборочно восстанавливать объекты базы данных.
Проанализировав опыт многих специалистов, выделим несколько критических моментов, которые часто упускают при автоматизации:
Риски формата .dt: Помните, что файл .dt — это логический бэкап. Если в структуре базы есть ошибки, они могут попасть в выгрузку, и восстановить её не удастся. Поэтому для серверных баз бэкап средствами СУБД должен быть основным, а .dt — вспомогательным (например, для программистов).
Правило "3-2-1": Храните как минимум 3 копии данных, на 2 разных носителях, при этом 1 копия должна находиться вне офиса (в облаке или на удаленном сервере). Для этого можно дополнить ваши скрипты командами копирования по протоколу FTP или в облачные хранилища через консольные утилиты.
Проверка восстановимости: Автоматизация — это хорошо, но она бесполезна, если архивы "битые". Мы рекомендуем раз в месяц проводить тестовое восстановление базы из бэкапа. Только успешный запуск 1С из резервной копии гарантирует, что ваша система автоматизации работает корректно.
Теневое копирование (VSS): Для файловых баз под Windows отличным решением будет использование службы теневого копирования тома. Это позволяет копировать файлы базы 1Cv8.1CD даже в тот момент, когда в ней работают люди, избегая ошибок блокировки файлов.