ibcmd — консольная утилита платформы 1С, которая работает с информационной базой напрямую через СУБД: создаёт базу, выгружает и загружает файл .dt, копирует базу между серверами и даже между разными СУБД. Ей не нужен запущенный кластер 1С, служба RAS или открытый конфигуратор, поэтому ibcmd 1С удобно вызывать из скриптов на bash и PowerShell — для резервного копирования, разворачивания тестовых баз и миграций.

Ниже — практические примеры команд, которые я использую при администрировании: общая схема параметров, создание базы, dump, restore, replicate, и пара слов про автономный сервер ibsrv. Утилита поставляется вместе с платформой и есть в сборках для Windows и Linux.

Что умеет ibcmd и чем отличается от rac

На серверах 1С обычно есть две консольные утилиты, и их часто путают:

racibcmd
С чем работаетС кластером через службу RASС информационной базой через СУБД
Что нужно для работыЗапущенный ragent и RASДоступ к СУБД (или к каталогу файловой базы)
Типичные задачиСеансы, рабочие процессы, регистрация баз, блокировка регламентных заданийСоздание базы, выгрузка/загрузка dt, копирование, работа с конфигурацией
Лицензия сервера 1СНужна для работы кластераДля операций с базой не требуется

Главная идея ibcmd — автономность. Утилита сама является «движком» платформы: она подключается к PostgreSQL, MS SQL Server и другим поддерживаемым СУБД, читает и пишет данные информационной базы без посредников.

ibcmd 1С подключается к базе напрямую, минуя кластер серверов
ibcmd 1С подключается к базе напрямую, минуя кластер серверов

У утилиты несколько режимов (первое слово после ibcmd). На практике чаще всего нужны два:

  • infobase — операции с информационной базой: create, dump, restore, replicate, работа с конфигурацией;
  • server — подготовка файла конфигурации для автономного сервера.

Полный список режимов и ключей для своей версии платформы удобно смотреть встроенной справкой: ibcmd help и ibcmd help infobase. Набор параметров от релиза к релизу расширяется, поэтому перед написанием скрипта я всегда сверяюсь со справкой той сборки, что стоит на сервере.

Параметры подключения к СУБД

Любая команда режима infobase начинается с описания того, где лежит база. Для PostgreSQL на нестандартном порту это выглядит так:

bash
ibcmd infobase \
  --dbms=PostgreSQL \
  --db-server="pg-srv port=5433" \
  --db-name=trade_test \
  --db-user=onec_admin \
  --db-pwd='СекретныйПароль' \
  <команда> <параметры команды>

Что здесь важно:

  • --dbms — тип СУБД: PostgreSQL, MSSQLServer, IBMDB2, OracleDatabase;
  • --db-server — адрес сервера СУБД; порт для PostgreSQL указывается внутри строки через port=;
  • --db-name — имя базы данных в СУБД, а не имя базы в кластере 1С;
  • --db-user и --db-pwd — пользователь и пароль СУБД.

Не путайте их с параметрами --user и --password: это пользователь информационной базы 1С, они нужны для команд, которые проверяют права внутри базы (например, выгрузка и загрузка dt при включённой аутентификации).

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

Создание информационной базы

Команда create создаёт новую базу в СУБД. Её можно сразу заполнить — из выгрузки dt или из файла конфигурации cf:

bash
ibcmd infobase create \
  --dbms=PostgreSQL --db-server="pg-srv port=5433" \
  --db-name=trade_copy --db-user=onec_admin --db-pwd='СекретныйПароль' \
  --create-database \
  --restore=/backup/trade_2026-10-15.dt

Варианты наполнения:

  • --restore=<файл.dt> — создать базу и загрузить в неё данные из выгрузки;
  • --load=<файл.cf> — создать базу и загрузить конфигурацию;
  • --apply вместе с --load — сразу применить конфигурацию к структуре базы данных;
  • --force — не останавливаться на вопросах и предупреждениях.

Флаг --create-database нужен, если базы данных на сервере СУБД ещё нет. После создания базу остаётся зарегистрировать в кластере (через консоль администрирования или rac), если ей будут пользоваться через сервер 1С.

Выгрузка базы в dt: ibcmd infobase dump

Выгрузка — самый частый сценарий. Обратите внимание на порядок: сначала общие параметры подключения, потом команда, потом её параметры и путь к файлу.

bash
ibcmd infobase \
  --dbms=PostgreSQL --db-server="pg-srv port=5433" \
  --db-name=trade --db-user=onec_admin --db-pwd='СекретныйПароль' \
  dump --user=Администратор --password='ПарольВБазе' \
  /backup/trade_$(date +%F).dt

Пара практических замечаний:

  1. Выгрузка при работающих пользователях технически возможна, но данные в файле могут оказаться несогласованными, а сама база в это время работает медленнее. Для резервной копии, из которой реально придётся восстанавливаться, выбирайте окно обслуживания.
  2. Выгрузка dt — не замена бэкапу СУБД. Это удобный логический снимок для переноса и тестовых копий. Для ежедневной защиты данных надёжнее штатные средства СУБД (pg_dump, резервное копирование MS SQL) плюс проверка восстановления. Подробнее о схеме, которую я рекомендую, — на странице резервного копирования 1С.

Загрузка из dt: ibcmd infobase restore

Загрузка затирает текущие данные базы, поэтому в скриптах её стоит защищать проверками, чтобы случайно не залить тестовую выгрузку в рабочую базу.

bash
ibcmd infobase \
  --dbms=PostgreSQL --db-server="pg-srv port=5433" \
  --db-name=trade_test --db-user=onec_admin --db-pwd='СекретныйПароль' \
  restore --user=Администратор --password='ПарольВБазе' \
  --force \
  --session-terminate-message="Идёт загрузка данных, база будет доступна позже" \
  /backup/trade_2026-10-15.dt
  • --create-database — создать базу в СУБД, если её нет; если база уже есть, команда с этим флагом завершится ошибкой;
  • --force — принудительно завершить активные сеансы пользователей;
  • --session-terminate-message — текст, который увидят пользователи при отключении; работает только вместе с --force.

Типичная связка «обновить тестовую базу из рабочей»: ночью dump рабочей базы, затем restore в тестовую с --force. Всё делается одним скриптом по расписанию, без единого запуска конфигуратора.

Копирование и перенос между СУБД: replicate

Команда replicate копирует базу напрямую из одной СУБД в другую, без промежуточного dt-файла. Источник описывается обычными параметрами, приёмник — параметрами с префиксом --target-:

bash
ibcmd infobase \
  --dbms=MSSQLServer --db-server=mssql-srv \
  --db-name=trade --db-user=sa_onec --db-pwd='ПарольMSSQL' \
  replicate \
  --target-dbms=PostgreSQL \
  --target-database-server="pg-srv port=5433" \
  --target-database-name=trade \
  --target-database-user=onec_admin \
  --target-database-password='СекретныйПароль' \
  --target-create-database \
  --jobs-count=4 --target-jobs-count=4
Репликация базы 1С через ibcmd в несколько потоков между разными СУБД
Репликация базы 1С через ibcmd в несколько потоков между разными СУБД

Параметры --jobs-count (-j) и --target-jobs-count (-J) задают число потоков чтения и записи. На больших базах многопоточность заметно сокращает время переноса; число потоков подбирайте по ядрам и дискам обоих серверов, а не «чем больше, тем лучше».

Где replicate выручает:

  • быстрая копия базы на том же сервере (источник и приёмник на одном сервере, разные имена баз);
  • перенос базы на новый сервер СУБД;
  • миграция с MS SQL Server на PostgreSQL одной командой — частая задача при переходе 1С на Linux и PostgreSQL.

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

Автономный сервер ibsrv

Вторая часть того же инструментария — автономный сервер ibsrv. Это «мини-сервер» 1С и веб-сервер в одном процессе: он поднимает одну информационную базу и позволяет подключаться к ней через веб-клиент или по HTTP без полноценного кластера и без отдельного Apache или IIS. Поддерживаются отладка по HTTP, SSL и мониторинг через HTTP-запросы.

Порядок работы:

  1. Сгенерировать файл конфигурации автономного сервера командой режима server, например ibcmd server config init с параметрами подключения к базе, адресом и портом.
  2. Запустить сервер с этим файлом: ibsrv --config=<путь к файлу>.

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

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

  • Перепутаны пользователи. --db-user — пользователь СУБД, --user — пользователь 1С. Ошибка аутентификации почти всегда отсюда.
  • Порт PostgreSQL указан отдельным ключом. Порт пишется внутри --db-server: "pg-srv port=5433".
  • Параметры команды стоят перед командой. Общие параметры подключения — до dump/restore/replicate, специфичные — после.
  • Версия ibcmd не совпадает с версией базы. Используйте утилиту из той же версии платформы, на которой работает база.
  • restore без защиты в скрипте. Добавьте проверку имени базы, иначе рано или поздно тестовая выгрузка окажется в рабочей.
  • Пароли в открытом виде. Не храните их в тексте скрипта, который лежит в общей папке.

Итог

  • ibcmd 1С работает с базой напрямую через СУБД, без кластера и RAS — это делает её основой для скриптов администрирования.
  • Основные команды: infobase create, dump, restore, replicate; справка по ключам — ibcmd help.
  • replicate с многопоточностью — самый быстрый путь скопировать базу или перенести её с MS SQL на PostgreSQL.
  • Выгрузка dt удобна для копий и переноса, но не заменяет резервное копирование средствами СУБД.
  • Автономный сервер ibsrv хорош для стендов и отладки, но не для продуктивной нагрузки.