В этой статье будет продемонстрирована выгрузка клиент-серверной базы 1С помощью утилиты командной строки ibcmd на Linux.

Введение

В этой статье будет продемонстрирована выгрузка клиент-серверной базы 1С на сервере Ubuntu 16.04 с помощью утилиты ibcmd. Я думаю для других систем Linux это работает одинаково. Даже для Windows это работает схожим образом.

Когда вы устанавливаете сервер 1С, то вместе с ним устанавливаются две утилиты:

  • ibsrv — позволяет запускать автономный сервер, но об этом не будет рассказано в этой статье;
  • ibcmd — утилита, которая позволяет работать с базами 1С, например создавать и удалять их, загружать и выгружать их. При этом эти базы могут быть клиент-серверными, файловыми или работать под управлением автономного сервера.

Я при написании этой статьи использовал версию платформы — 8.3.23.1865, а демонстрировать буду выгрузку именно клиент-серверной базы 1С.

При выгрузки базы утилита ibcmd имеет свои особенности:

  • Этой утилите не нужно ни клиентской ни серверной лицензии. Хотя на одной из версий 8.3.20 — клиентскую лицензию утилита всё-же занимала.
  • Утилита выгружает базу в dt напрямую с сервера СУБД, минуя сервер 1С.
  • Эта утилита является утилитой командной строки, а это означает что с её помощью можно легко автоматизировать свои действия.

Подготовка

Для начала перейдём в каталог с установленной платформой:

cd /opt/1cv8/x86_64/8.3.23.1865/

При создании выгрузки нужно указать конфиг в формате YAML. С помощью утилиты ibcmd можно сделать такой конфиг:

./ibcmd server config init --name=hrm --base=/web-pub --port=8080 --address=192.168.0.5 --dbms=PostgreSQL --db-server=192.168.0.11 --db-user=postgres --db-pwd=dbpass --db-name=hrm > /root/hrm.yml

Разберём команду:

  • ibcmd server config init — собственно сама команда для создания конфига;
  • --name — имя базы 1С;
  • --base — имя веб-публикации (для запуска автономного сервера, но об этом не в этой статье);
  • --port — порт для работы автономного сервера;
  • --address — адрес, который будет прослушивать автономный сервер;
  • --dbms — тип сервера SQL;
  • --db-server — адрес SQL сервера;
  • --db-user — имя пользователя SQL сервера;
  • --db-pwd — пароль пользователя SQL сервера;
  • --db-name — имя базы на SQL сервере;
  • > /root/hrm.yml — перенаправляем вывод в файл.

После выполнения предыдущей команды получаем следующий конфиг:

server:
  address: 192.168.0.5
  port: 8080
database:
  dbms: PostgreSQL
  server: 192.168.0.11
  name: hrm
  user: postgres
  password: dbpass
infobase:
  id: 7b2438f4-f1ac-7b21-ac21-em48c6352va1
  name: hrm
  distribute-licenses: yes
  schedule-jobs: allow
http:
  base: /web-pub

Так как утилита ibcmd работает напрямую в SQL, и с ним же работает сам сервер 1С, то для предотвращения коллизий, предварительно нужно отключить службу сервера 1С:

systemctl stop srv1cv83-8.3.23.1865.service

Теперь можем создаём архивную копию:

./ibcmd infobase dump --config /root/hrm.yml --data=/root/1c-data/ --user=админ --password=pass /root/hrm.dt

Разберём команду:

  • ibcmd infobase dump — команда выгрузки 1С базы в dt;
  • --config — используемый конфиг;
  • --data — каталог данных 1С (временных и сеансовых). Этот каталог можно заранее и не делать, он будет создан в процессе выгрузки базы;
  • --user — пользователь в информационной базе 1С;
  • --password — пароль в информационной базе 1С;
  • /root/hrm.dt — файл выгрузки.

И наконец, снова запустим службу сервера 1С:

systemctl start srv1cv83-8.3.23.1865.service

Итог

С помощью этой утилиты вы можете автоматизировать процесс создания резервных копий в dt формате. А именно dt является наиболее удобным форматом для программистов или продвинутых пользователей. Также рекомендую делать бэкапы средствами SQL, но об этом в других статьях.

Другие мои статьи по 1С доступны здесь.

Сводка
Создание архивов  баз 1С с помощью утилиты ibcmd
Имя статьи
Создание архивов баз 1С с помощью утилиты ibcmd
Описание
В этой статье будет продемонстрирована выгрузка клиент-серверной базы 1С помощью утилиты командной строки ibcmd на Linux

One Reply to “Выгрузка баз 1С на Linux с помощью ibcmd”

  1. Может это больше никому и никогда не пригодится и вообще все об этом знают, но теперь я знаю, что это не работает на базах read-only (реплика слейв. postgresql 15)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *