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

В этой статье будет продемонстрирована выгрузка клиент-серверной базы 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С доступны здесь.



2023-09-29T16:37:20
Администрирование серверов