Вопрос о физическом расположении файлов информационной базы является фундаментальным для любого системного администратора, обслуживающего инфраструктуру 1С:Предприятие. В отличие от файлового варианта работы, где все данные хранятся в одном каталоге с расширением .1cd, клиент-серверная архитектура распределяет информацию между платформой 1С и системой управления базами данных. Понимание этой структуры критически важно для выполнения резервного копирования, миграции на другой сервер или восстановления после сбоев.

Многие пользователи ошибочно полагают, что файлы базы лежат в папке установки самой платформы 1С или в каталоге с конфигурацией сервера. На самом деле файлы данных СУБД PostgreSQL находятся в изолированном пространстве, доступ к которому регулируется правами доступа операционной системы. Локализация этих файлов напрямую зависит от операционной системы, метода установки СУБД и настроек, заданных в процессе инициализации кластера баз данных.

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

Архитектура хранения данных в связке 1С и PostgreSQLПеред тем как искать конкретные файлы на диске, необходимо четко разграничить понятия каталога информационных баз и каталога данных СУБД. Платформа 1С:Предприятие хранит в своем каталоге (обычно это C:\ProgramData\1C\1Cv8\1Cv8DBConn или аналог в Linux) лишь список подключений и параметры соединения с сервером баз данных. Сами же массивы данных, индексы и журналы транзакций физически reside в файловом менеджере операционной системы под управлением процесса postgres.

Физическое хранение организовано в виде кластера, который содержит один или несколько экземпляров баз данных. Для 1С характерно использование отдельных схем внутри одной базы данных PostgreSQL или отдельных баз данных для каждой информационной базы, в зависимости от версии платформы и настроек. Файлы, которые вы ищете, имеют имена вида base/ OID, где OID — это числовой идентификатор базы данных, а не читаемое имя "Бухгалтерия" или "Зарплата".

⚠️ Внимание: Никогда не пытайтесь копировать файлы базы данных PostgreSQL во время работы сервера 1С. Это гарантированно приведет к повреждению данных и невозможности запуска системы. Для копирования используйте только штатные средства pg_dump или остановку службы.

Важно понимать, что прямая работа с файлами на уровне файловой системы для администратора 1С обычно не требуется, за исключением случаев глубокой диагностики или аварийного восстановления. Основным интерфейсом управления являются SQL-запросы и утилиты командной строки, предоставляемые дистрибутивом СУБД.

Поиск расположения базы в операционной системе LinuxВ среде Linux, которая является наиболее популярной платформой для развертывания серверов 1С с PostgreSQL, пути к данным стандартизированы, но могут варьироваться в зависимости от дистрибутива (Ubuntu, CentOS, Debian) и способа установки (из репозитория или скомпилировано вручную). Стандартный каталог для хранения данных кластера обычно находится в директории /var/lib/pgsql или /var/lib/postgresql.

Для точного определения пути необходимо обратиться к конфигурационному файлу postgresql.conf. Параметр data_directory в этом файле указывает абсолютный путь к каталогу, где хранятся все данные. Если вы не знаете, где лежит этот конфиг, можно воспользоваться командой поиска или запросом к самой СУБД, если есть доступ к консоли psql.

sudo find / -name postgresql.conf 2>/dev/null

После нахождения файла откройте его любым текстовым редактором (например, nano или vim) и найдите строку, начинающуюся с data_directory. Часто путь выглядит как /var/lib/postgresql/14/main, где "14" — версия СУБД, а "main" — имя кластера. Внутри этого каталога вы увидите подпапку base, содержащую файлы баз данных, и файл pg_hba.conf, отвечающий за правила доступа.

  • 📂 Стандартный путь в Ubuntu/Debian: /var/lib/postgresql/[версия]/main
  • 📂 Стандартный путь в CentOS/RHEL: /var/lib/pgsql/[версия]/data
  • 🔍 Для поиска используйте команду: psql -U postgres -c "SHOW data_directory;"
  • ⚙️ Права доступа к папке должны быть установлены на пользователя postgres

⚠️ Внимание: В современных дистрибутивах Linux каталог данных может быть скрыт или защищен расширенными правами доступа (SELinux или AppArmor). Прямой доступ из-под root может быть ограничен политиками безопасности.

💡

Если вы используете Docker-контейнер с PostgreSQL для 1С, файлы базы находятся внутри контейнера. Используйте команду docker inspect для выяснения пути к тому (volume) на хост-машине, куда монтируется директория /var/lib/postgresql/data.

Определение пути к данным в среде WindowsВ операционной системе Windows ситуация несколько отличается из-за особенностей установки программного обеспечения. При использовании стандартного установщика PostgreSQL (например, от EnterpriseDB) путь по умолчанию задается в процессе инсталляции и часто выглядит как C:\Program Files\PostgreSQL\[версия]\data. Однако администраторы могут изменить этот путь на любой другой диск, например, D:\PGData, для разделения системного диска и диска с данными.

Чтобы узнать точное расположение, не открывая файлы вручную, можно воспользоваться служебной утилитой или запросом через интерфейс 1С или pgAdmin. Самый надежный способ — выполнить SQL-запрос к серверу. Для этого подключитесь к базе данных под пользователем с правами суперпользователя (обычно это postgres) и выполните команду показа параметров.

SHOW data_directory;

Результатом выполнения будет строка с полным путем, например, C:/Program Files/PostgreSQL/13/data. Обратите внимание, что в выводе пути в Windows часто отображаются с прямыми слэшами, что является нормой для внутреннего представления PostgreSQL, хотя файловая система Windows понимает и обратные слэши.

⚠️ Внимание: Каталог Program Files в Windows защищен системой контроля учетных записей (UAC). Прямое копирование файлов оттуда может потребовать подтверждения прав администратора или изменения прав доступа к папке, что не рекомендуется делать без острой необходимости.

Также стоит проверить переменные окружения или реестр Windows, если стандартные пути не подходят. Ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations может содержать информацию о путях установки различных экземпляров СУБД, установленных на сервере.

📊 На какой ОС развернута ваша база 1С с PostgreSQL?
Windows Server 2016/2019/2022
Linux (Ubuntu/Debian)
Linux (CentOS/RHEL)
MacOS / Другое

Структура каталога данных и файлы базы 1СПосле того как вы попали в директорию данных (data directory), вы увидите множество файлов и подкаталогов. Важно понимать, что вы не найдете файл с названием "1CBase.1cd". Данные 1С разбиты на множество мелких файлов внутри подкаталога base. Каждая подпапка в base соответствует одной базе данных PostgreSQL, а имя папки — это её OID (Object Identifier).

Чтобы связать OID с именем информационной базы 1С, необходимо выполнить запрос к системному каталогу PostgreSQL. Имя базы данных в PostgreSQL часто совпадает с именем базы в 1С, но может быть изменено при создании. Для просмотра списка баз и их идентификаторов используйте команду:

\l
(в консоли psql)

Или SQL-запрос:

SELECT datname, oid FROM pg_database;

Найдя нужный OID, вы переходите в соответствующую папку внутри base. Там хранятся файлы сегментов таблиц. Имена файлов представляют собой числа. Соотнести конкретный файл с таблицей 1С (например, таблица документов "Реализация") можно только через системные таблицы pg_class и pg_relation_filepath. Прямое чтение этих файлов без СУБД невозможно, так как они имеют бинарный формат, специфичный для версии PostgreSQL.

Имя файла/папки Назначение Важность для 1С
base Хранит файлы таблиц и индексов всех баз данных Критическая (основные данные)
pg_wal Журнал предзаписи (Write Ahead Log) Критическая (целостность транзакций)
global Глобальные системные таблицы (роли, табличные пространства) Высокая (без неё не запустится кластер)
pg_hba.conf Файл настройки правил аутентификации клиентов Высокая (доступ для сервера 1С)
postgresql.conf Основной файл конфигурации сервера Высокая (настройки памяти, портов)
Что такое файлы отношения (relation files)?

Внутри папки base файлы имеют имена вроде 16384, 16384.1, 16384.2. Это сегменты одной большой таблицы. PostgreSQL разбивает большие таблицы на файлы по 1 ГБ (по умолчанию). Файл 16384 — это первый гигабайт, 16384.1 — второй и так далее.

Настройка доступа и файл pg_hba.confОдним из самых важных файлов в директории данных является pg_hba.conf (Host-Based Authentication). Именно этот файл определяет, с каких IP-адресов и под каким пользователем сервер 1С может подключаться к базе данных PostgreSQL. Если сервер 1С не может соединиться с базой, в первую очередь следует проверить настройки этого файла.

Файл содержит список правил, каждое из которых описывает тип подключения, базу данных, пользователя, адрес клиента и метод аутентификации. Для работы 1С обычно требуется правило, разрешающее подключение по протоколу host с методом аутентификации md5 или scram-sha-256. Пример правильной записи для локальной сети:

host    all             all             192.168.1.0/24            md5

Изменения в файл pg_hba.conf вступают в силу только после перезагрузки конфигурации сервера PostgreSQL. Это можно сделать командой SELECT pg_reload_conf(); или перезапуском службы. Ошибки в синтаксисе этого файла приведут к тому, что сервер вообще не запустится или отвергнет все подключения.

  • 🔐 Метод trust разрешает вход без пароля — используйте только для локального тестирования!
  • 🔐 Метод md5 требует передачи хэша пароля — стандарт для 1С.
  • 🔐 Метод peer работает только для локальных подключений через сокет и проверяет имя пользователя ОС.
  • 📝 После правок всегда проверяйте логи PostgreSQL на наличие ошибок синтаксиса.
💡

Файл pg_hba.conf находится в той же директории, что и данные (data_directory), если путь не переопределен в postgresql.conf параметром hba_file.

Диагностика проблем с расположением и доступомЕсли вы переместили файлы базы данных вручную или изменили пути в конфигурации, сервер 1С может выдать ошибку при попытке подключения. Типичная ошибка "Сервер баз данных недоступен" или "Ошибка соединения с информационной базой" часто маскирует проблемы с правами доступа к каталогу данных или неверный путь в конфигурации.

Для диагностики используйте журнал регистрации событий 1С и логи PostgreSQL. В логах СУБД (файл postgresql.log, путь к которому указан в logging_collector или стандартный log в каталоге данных) будут записаны причины отказа в соединении. Частой проблемой является несоответствие владельца файлов. Процесс PostgreSQL должен запускаться от имени пользователя postgres, и этот же пользователь должен владеть всеми файлами в каталоге данных.

Проверить владельца файлов в Linux можно командой:

ls -la /var/lib/postgresql/14/main

Если владельцем является root или другой пользователь, сервер не запустится. Исправить это можно командой chown -R postgres:postgres /путь/к/данным. В Windows необходимо проверить вкладку "Безопасность" свойств папки и убедиться, что пользователь, от имени которого запущена служба PostgreSQL, имеет полные права на чтение и запись.

⚠️ Внимание: Изменение пути к данным в postgresql.conf требует, чтобы новый каталог был пустым (за исключением файла PG_VERSION при инициализации) или содержал валидный кластер БД. Нельзя просто указать путь к произвольной папке.

☑️ Диагностика подключения 1С к PostgreSQL

Выполнено: 0 / 5

Часто задаваемые вопросы (FAQ) Можно ли переместить базу данных 1С на другой диск, просто скопировав файлы?

Нет, простое копирование файлов рабочей базы недопустимо. Для переноса необходимо остановить службу PostgreSQL, переместить весь каталог данных, изменить права доступа и обновить путь в конфигурационном файле postgresql.conf или использовать символические ссылки. Надежнее сделать дамп базы (pg_dump) и восстановить её (pg_restore) в новом месте.

Где хранятся файлы внешних обработок и отчетов 1С при работе с PostgreSQL?

Внешние обработки и отчеты, сохраненные в информационной базе, хранятся непосредственно в таблицах PostgreSQL внутри кластера 1С (в системных или пользовательских таблицах конфигурации). Отдельными файлами на диске сервера они не создаются, если только вы не используете механизм сохранения во внешние файлы через интерфейс 1С.

Как узнать размер базы данных 1С на уровне файлов PostgreSQL?

Размер папки с OID базы в каталоге base будет приблизительно равен размеру базы. Точный размер можно узнать SQL-запросом: SELECT pg_size_pretty(pg_database_size('имя_базы_1с'));. Учтите, что размер на диске может быть больше из-за фрагментации и служебных структур (TOAST, индексы).

Что делать, если файл pg_hba.conf заблокирован и не редактируется?

Убедитесь, что вы открыли файл от имени администратора (root в Linux или Администратор в Windows). Также проверьте, не запущен ли редактор в режиме "только чтение". Если файл находится в сетевой папке или имеет атрибут "Только для чтение" в свойствах файла, снимите этот атрибут перед редактированием.

Влияет ли версия PostgreSQL на расположение файлов?

Структура каталогов и имена основных файлов остаются неизменными across версий. Однако формат внутренних файлов данных может отличаться между мажорными версиями (например, между 12 и 13 версией). Поэтому нельзя просто скопировать файлы данных из одной версии PostgreSQL в другую без процедуры миграции (dump/restore или pg_upgrade).