К статье
Практический материал

Администрирование · 11 мин

BAK: что это за формат в 1С и как восстановить из него базу

Разбираем, что такое BAK-файл в 1С, как он создаётся, чем отличается от DT, как восстановить базу из BAK и какие ошибки встречаются чаще всего.

Если вы нашли файл с расширением .bak рядом с базой 1С или в папке резервных копий, почти всегда это резервная копия, созданная либо самой 1С, либо СУБД (MS SQL Server, PostgreSQL), либо сторонней программой архивации. Само по себе расширение .bak не является «родным» форматом платформы 1С — это общепринятое обозначение backup-файла, и внутри может оказаться совершенно разное содержимое.

Чаще всего под «BAK в 1С» понимают один из двух сценариев: копия файловой базы, где переименован файл 1Cv8.1CD, или выгрузка базы MS SQL Server, сделанная средствами SQL Server (команда BACKUP DATABASE). От того, какой именно это случай, зависит способ восстановления — и ошибиться здесь легко.

Правильно определить происхождение файла — ключевая задача до начала любых действий. Восстановление «не тем» способом в лучшем случае завершится ошибкой, в худшем — затрёт рабочую базу. Ниже разберём, как отличить типы BAK-файлов, как безопасно восстановить данные и какие проверки выполнить после.

Что скрывается за расширением .bak

Расширение .bak не регламентировано никаким стандартом — его присваивает любая программа, создающая резервную копию. Поэтому в инфраструктуре 1С встречаются как минимум четыре разных типа файлов с этим расширением, и путать их нельзя.

Основные варианты происхождения BAK рядом с 1С:

  • Переименованный 1Cv8.1CD — копия файловой базы, которую администратор или скрипт сохранил, изменив расширение. Восстанавливается простым переименованием обратно в 1Cv8.1CD.
  • Бэкап MS SQL Server — создан командой BACKUP DATABASE или через план обслуживания. Восстанавливается только средствами SQL Server (SSMS), а не конфигуратором 1С.
  • Архив сторонней программы — некоторые backup-утилиты (Veeam, Cobian и др.) пишут свои копии с расширением .bak. Формат определяется документацией конкретной программы.
  • Автокопия самой 1С — при некоторых операциях (например, тестировании и исправлении с включённой опцией создания копии) платформа сохраняет исходный файл базы с расширением .bak или аналогичным суффиксом.

Как определить, что внутри BAK-файла

Прежде чем что-то восстанавливать, ответьте на три вопроса: где лежит файл, какого он размера и что у него в начале. Этого достаточно для уверенной классификации в большинстве случаев.

Расположение даёт первую подсказку. Файл, лежащий в каталоге файловой базы рядом с папками 1Cv8Log и служебными файлами — почти наверняка переименованный 1Cv8.1CD. Файл в папке вида Backup на диске SQL-сервера или в каталоге, который обслуживает план обслуживания SQL Server — скорее всего бэкап СУБД.

Размер тоже информативен: копия файловой базы будет примерно равна размеру 1Cv8.1CD, а SQL-бэкап часто заметно меньше размера данных из-за того, что хранит только занятые страницы (полный бэкап) — хотя это не строгое правило.

Первые байты файлаОткройте в hex-редакторе

Файл 1Cv8.1CD начинается с сигнатуры '1CIBDMS' (видно в ASCII). Бэкап SQL Server имеет собственный заголовок TAPE. ZIP-архив начинается с 'PK'.

РасположениеКаталог файловой базы

Скорее всего переименованный 1Cv8.1CD — проверьте размер и дату изменения.

РасположениеПапка бэкапов SQL-сервера

Почти наверняка бэкап СУБД — восстанавливать через SSMS.

РазмерРавен размеру рабочей базы

Признак прямой копии файла 1Cv8.1CD.

Быстрый способ проверить SQL-бэкап без восстановления — выполнить в SSMS команду RESTORE HEADERONLY: она покажет имя исходной базы, дату создания и тип бэкапа, не изменяя никаких данных.

sql
RESTORE HEADERONLY FROM DISK = N'D:\Backup\mybase.bak';

Восстановление файловой базы из BAK

Самый простой сценарий: BAK — это переименованная копия 1Cv8.1CD. Здесь восстановление сводится к возврату правильного имени файлу и подключению базы в списке информационных баз.

Восстановление файловой базы из BAK
  1. 1
    Создайте новую пустую папку для восстанавливаемой базы — не работайте в каталоге действующей базы.
  2. 2
    Скопируйте (не переместите!) BAK-файл в эту папку.
  3. 3
    Переименуйте копию в 1Cv8.1CD.
  4. 4
    Откройте окно запуска 1С, нажмите «Добавить» → «Добавление в список существующей информационной базы» и укажите созданную папку.
  5. 5
    Запустите базу в режиме конфигуратора и убедитесь, что она открывается без ошибок.
  6. 6
    Проверьте актуальность данных: откройте в режиме предприятия несколько последних документов.

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

Если при открытии конфигуратор сообщает об ошибке формата файла — значит, это не 1Cv8.1CD. Вернитесь к определению типа файла: возможно, это SQL-бэкап или архив, который нужно сначала распаковать.

Восстановление клиент-серверной базы из SQL-бэкапа

В клиент-серверном варианте 1С данные хранятся в СУБД, и корректный способ резервного копирования — штатные средства SQL Server. Файл .bak в этом случае восстанавливается на уровне СУБД, а уже потом база подключается к серверу 1С.

Порядок действий в SQL Server Management Studio: подключитесь к серверу, в контекстном меню узла «Базы данных» выберите «Восстановить базу данных», укажите устройство «Файл» и путь к BAK, задайте имя новой базы (не совпадающее с рабочей, если восстанавливаете рядом). Перед восстановлением поверх существующей базы убедитесь, что с ней нет активных соединений — иначе операция завершится ошибкой «база данных используется».

После восстановления базы в СУБД её нужно зарегистрировать в кластере серверов 1С: в консоли администрирования создайте новую информационную базу, указав существующую базу данных на SQL Server (флаг «Создать базу данных в случае её отсутствия» должен быть снят). Либо добавьте базу в список информационных баз на клиенте, указав параметры сервера.

Чем BAK отличается от DT и что выбрать для копирования

Частая путаница: администраторы смешивают BAK и DT, хотя это принципиально разные механизмы. DT — выгрузка информационной базы средствами конфигуратора 1С, BAK — копия на уровне файлов или СУБД. У каждого способа свои сильные стороны и ограничения.

Способы резервного копирования базы 1С

Выгрузка в DT (конфигуратор)

Переносимый между СУБД формат, удобен для переноса и обмена. Минусы: долго на больших базах, требует монопольного доступа, не защищён от ошибок самой выгрузки.

BAK через SQL Server

Быстро, можно по расписанию без остановки работы, поддерживает разностные копии. Минусы: привязка к конкретной СУБД и её версии (бэкап новой версии не восстановится на старой).

Копия файла 1Cv8.1CD

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

Для клиент-серверных баз предпочтителен SQL-бэкап по расписанию плюс периодическая выгрузка DT как независимый контрольный экземпляр. Для файловых баз минимум — регулярное копирование 1Cv8.1CD при закрытых сеансах. Полагаться на один метод рискованно: если единственная копия окажется битой, восстанавливать будет нечего.

Типичные ошибки при работе с BAK

Типичные ошибки
01
Попытка открыть BAK напрямую в конфигураторе — платформа не работает с этим расширением, файл нужно сначала переименовать в 1Cv8.1CD или восстановить через СУБД.
02
Восстановление SQL-бэкапа поверх рабочей базы «чтобы быстрее» — при несовместимости версий или прерывании операции рабочая база окажется в состоянии Restoring и потребует вмешательства.
03
Копирование файловой базы при открытых сеансах — такой BAK может содержать несогласованные данные и не открыться.
04
Хранение единственной копии на том же диске, что и база — при отказе диска теряется и база, и бэкап.
05
Отсутствие проверки восстановления — копия считается рабочей только после тестового восстановления, а не после факта создания файла.

Отдельно стоит упомянуть версионную несовместимость SQL Server: бэкап, созданный на более новой версии SQL Server, нельзя восстановить на более старой — штатных обходных путей нет. Если мигрируете на сервер со старой версией СУБД, переносите данные через DT-выгрузку.

Как проверить, что восстановление прошло успешно

Факт открытия базы — необходимое, но недостаточное условие. База может открываться и при этом содержать повреждённые таблицы или неполные данные, особенно если BAK создавался в аварийной ситуации.

Контрольные точки

Как проверить результат

Открытие в конфигураторе
Норма

База открывается без сообщений об ошибке формата

Тревожный признак

Ошибка формата файла или требование тестирования и исправления

Актуальность данных
Норма

Последние документы соответствуют дате создания копии

Тревожный признак

Данные заметно старше ожидаемой даты бэкапа

Целостность
Норма

Тестирование и исправление (проверка физической целостности) проходит без ошибок

Тревожный признак

Найдены повреждённые таблицы или индексы

Регистрация в кластере
Норма

База видна в консоли кластера, сеансы подключаются

Тревожный признак

Ошибка соединения с СУБД при запуске

Для файловых баз после восстановления рекомендуется запустить утилиту chdbfl.exe (поставляется с платформой) или встроенное тестирование и исправление в режиме проверки физической целостности. Для SQL-баз достаточно штатной проверки целостности средствами СУБД (DBCC CHECKDB) и контрольного открытия в режиме предприятия.

Итог

Что важно запомнить

BAK — это резервная копия, а не рабочий формат 1С. Сначала определите происхождение файла (копия 1Cv8.1CD или бэкап SQL Server), затем применяйте соответствующий способ восстановления — и всегда работайте с копией файла, не трогая рабочую базу и оригинал бэкапа.

Частые вопросы

Можно ли открыть BAK-файл напрямую в 1С?

Нет. Платформа 1С не работает с расширением .bak. Если это копия файловой базы — переименуйте файл в 1Cv8.1CD и добавьте базу в список информационных баз. Если это бэкап SQL Server — сначала восстановите его средствами СУБД.

Чем отличается BAK от DT?

DT — выгрузка данных средствами конфигуратора 1С, переносимая между разными СУБД. BAK — копия на уровне файлов или СУБД, привязанная к конкретной технологии хранения. DT удобен для переноса и обмена, BAK — для быстрого регламентного резервного копирования.

База восстановилась, но данных меньше, чем ожидалось. Почему?

Скорее всего, BAK создан раньше, чем вы рассчитывали, либо это разностная (differential) копия, для которой нужен ещё и полный бэкап. Проверьте дату создания файла и тип бэкапа командой RESTORE HEADERONLY.

Можно ли восстановить BAK с нового SQL Server на старый?

Нет, обратная совместимость бэкапов SQL Server работает только в одну сторону: старый бэкап восстанавливается на новой версии, но не наоборот. Для переноса на старую версию используйте выгрузку базы в DT через конфигуратор.

Как часто нужно делать резервные копии базы 1С?

Зависит от интенсивности ввода данных: при ежедневной активной работе разумный минимум — полная копия ежедневно плюс разностные копии в течение дня для SQL-баз. Ключевой критерий — допустимый объём потери данных: сколько часов работы вы готовы ввести заново.

Что делать, если BAK-файл не открывается ни одним способом?

Сохраните файл без изменений и проверьте его начало в hex-редакторе: сигнатура подскажет реальный формат (1CIBDMS — база 1С, PK — архив, TAPE-заголовок — бэкап SQL). Если файл повреждён физически, самостоятельное восстановление маловероятно — потребуется специализированный инструментарий или другая копия.