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