Администрирование · 8 мин
Где лежит база 1С на PostgreSQL и как найти её файлы
Где физически хранится база 1С на PostgreSQL: каталог data в Linux и Windows, как найти путь через конфиг и запросы, чем отличается от файловой базы.
При клиент-серверном варианте работы 1С:Предприятия информационная база хранится не в файле 1Cv8.1CD, а внутри кластера PostgreSQL. Платформа 1С обращается к СУБД по сетевому протоколу, а сами данные лежат в каталоге данных PostgreSQL на сервере — в виде набора служебных файлов и подкаталогов, которые нельзя открыть или скопировать «как документ».
Точный путь зависит от операционной системы и способа установки PostgreSQL: пакетная установка из репозитория, сборка PostgresPro, установщик с сайта 1С или ручное развёртывание. Ниже разобраны типовые расположения, способы узнать фактический путь через конфигурацию и SQL-запросы, а также ограничения, которые важно учитывать перед любыми действиями с файлами базы.
Как 1С хранит данные в PostgreSQL
В клиент-серверной архитектуре участвуют три компонента: клиент 1С, сервер 1С:Предприятия и СУБД. Сервер 1С формирует SQL-запросы, а PostgreSQL исполняет их и физически размещает данные на диске. Поэтому на машине с сервером 1С файлов базы может не быть вовсе — всё находится на сервере СУБД.
Каждая информационная база, созданная через консоль кластера 1С или конфигуратор, соответствует одной базе данных внутри кластера PostgreSQL. Имя базы в СУБД совпадает с именем, указанным при создании. Внутри кластера база — это подкаталог с числовым идентификатором (OID) в структуре каталога данных, а не файл с понятным именем.
Типовые пути к каталогу данных
Расположение каталога данных задаётся при инициализации кластера (initdb) и фиксируется в настройках службы. Стандартные варианты зависят от дистрибутива и установщика.
| Окружение | Типичный путь к каталогу данных |
|---|---|
| Linux, пакет postgresql (Debian/Ubuntu) | /var/lib/postgresql/<версия>/main |
| Linux, пакеты PostgreSQL/PostgresPro (RHEL, CentOS, ALT) | /var/lib/pgsql/<версия>/data или /var/lib/pgsql/data |
| Linux, сборка от 1С (Postgres с патчами) | /var/lib/pgsql/data или путь, заданный при установке |
| Windows, установщик PostgreSQL | C:\Program Files\PostgreSQL\<версия>\data |
| Windows, PostgresPro | C:\Program Files\PostgresPro\<версия>\data |
Это ориентиры, а не гарантия: администратор мог указать другой диск или каталог при установке, например D:\pgdata на Windows или отдельный том /opt/pgdata в Linux. Поэтому полагаться на «стандартный путь» нельзя — его нужно проверить.
Как узнать точный путь через PostgreSQL
Самый надёжный способ — спросить у самой СУБД. Подключитесь к кластеру через psql, pgAdmin или любой SQL-клиент под пользователем с правами суперпользователя (обычно postgres) и выполните запрос.
SHOW data_directory;
-- Список баз и их владельцев:
SELECT datname FROM pg_database WHERE datistemplate = false;Если подключиться к СУБД нельзя, путь виден в параметрах запуска службы. В Linux посмотрите юнит systemd или переменную PGDATA: systemctl cat postgresql или содержимое файла окружения службы. В Windows откройте реестр: ветка службы postgresql в HKLM\SYSTEM\CurrentControlSet\Services содержит ImagePath, где после ключа -D указан каталог данных.
- 1Определите сервер СУБД: в консоли кластера 1С откройте свойства информационной базы и посмотрите поле «Сервер баз данных».
- 2Подключитесь к этому серверу через psql или pgAdmin под учётной записью postgres.
- 3Выполните SHOW data_directory; — получите каталог данных кластера.
- 4Выполните запрос к pg_database, чтобы увидеть список баз и найти нужную по имени.
- 5Сверьте имя базы в СУБД с именем, указанным в свойствах информационной базы 1С.
Что находится внутри каталога данных
Каталог данных — это не один файл, а структура. Ключевые элементы: подкаталог base с данными таблиц (по подкаталогу на каждую базу, имя — OID), global с общекластерными объектами, pg_wal с журналами предзаписи, а также конфигурационные файлы postgresql.conf и pg_hba.conf (в Debian-подобных системах конфиги вынесены в /etc/postgresql).
Соотнести базу 1С с её подкаталогом можно запросом: SELECT oid, datname FROM pg_database; — OID и будет именем папки внутри base. Однако практического смысла в ручной работе с этими файлами нет: таблицы 1С имеют служебные имена, а целостность обеспечивается только на уровне СУБД целиком.
Чем это отличается от файловой базы 1С
Файловая база — это один файл 1Cv8.1CD в сетевой папке, путь к которому виден прямо в списке баз при запуске 1С. Её можно скопировать проводником (при закрытых сеансах). С базой PostgreSQL такой подход не работает: простое копирование каталога данных без соблюдения процедур даёт непригодную или повреждённую копию.
Для переноса базы 1С на PostgreSQL используют выгрузку в dt через конфигуратор, выгрузку pg_dump с последующим восстановлением на новом сервере или создание новой информационной базы через консоль кластера с указанием уже восстановленной базы СУБД.
Способы получить копию базы
Универсально и просто, переносит базу между любыми СУБД. Медленно на больших базах, требует монопольного доступа.
Быстро и штатно для PostgreSQL, можно делать без остановки работы. Привязано к PostgreSQL, требует доступа к серверу СУБД.
Допустимо только при остановленной службе или через pg_basebackup. Самый рискованный вариант при ручном выполнении.
Частые ошибки и ограничения
Распространённая ситуация: администратор ищет «файл базы» на сервере 1С, хотя СУБД развёрнута на отдельной машине. Сначала проверьте свойства информационной базы в консоли кластера: там указаны и сервер СУБД, и имя базы данных, и пользователь СУБД, под которым 1С подключается.
Вторая типичная ошибка — попытка открыть каталог данных без прав. В Linux владельцем каталога является пользователь postgres, и даже чтение требует повышенных привилегий. Это нормальная защита, а не признак проблемы.
Как проверить результат
Каталог существует и содержит подкаталоги base, global, pg_wal
Каталог пустой или не содержит служебных подкаталогов — это не каталог данных
Имя совпадает с именем базы в свойствах информационной базы 1С
Базы с таким именем нет — возможно, вы подключились не к тому кластеру или серверу
Указаны сервер СУБД и имя базы, тип СУБД — PostgreSQL
Тип СУБД другой или база файловая — инструкция не применима
FAQ
Можно ли скопировать базу 1С на PostgreSQL простым копированием папки?
Только при полностью остановленной службе PostgreSQL и копировании всего каталога данных целиком, а не отдельной базы. В рабочей практике надёжнее использовать pg_dump, pg_basebackup или выгрузку .dt из конфигуратора.
Как узнать, на каком сервере лежит база, если инфраструктура незнакомая?
Откройте консоль кластера сервера 1С, найдите информационную базу и посмотрите её свойства: поля «Сервер баз данных» и «Имя базы данных СУБД» укажут, куда подключаться за файлами.
Почему в каталоге base нет папок с именами баз?
Подкаталоги внутри base называются числовыми OID, а не именами баз. Соответствие показывает запрос SELECT oid, datname FROM pg_database;.
Где лежат настройки PostgreSQL, если путь к данным известен?
Обычно postgresql.conf и pg_hba.conf находятся в том же каталоге данных. Исключение — Debian/Ubuntu, где конфигурация вынесена в /etc/postgresql/<версия>/main. Точный путь к конфигу показывает запрос SHOW config_file;.
Можно ли перенести каталог данных на другой диск?
Да: остановите службу PostgreSQL, переместите каталог целиком с сохранением прав владельца postgres, обновите путь в параметрах службы (PGDATA или ключ -D) и запустите службу. Перед операцией сделайте резервную копию.
Что важно запомнить
База 1С на PostgreSQL физически лежит в каталоге данных кластера на сервере СУБД, а не на сервере 1С. Точный путь дают запрос SHOW data_directory и параметры службы, а нужная база ищется по имени в pg_database. Любые операции с файлами — только через штатные инструменты резервного копирования, ручное копирование при работающей СУБД разрушает данные.