# Справочник по конфигурации

> Полный справочник по конфигурации pgBackRest: параметры архивирования, резервного копирования, репозиториев и облачных хранилищ.

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

--------

## Введение {#introduction}

pgBackRest может работать исключительно с параметрами командной строки, однако для сложных установок или большого числа параметров практичнее использовать файл конфигурации. По умолчанию он расположен в `/etc/pgbackrest/pgbackrest.conf`. Если файла там нет, проверяется прежнее расположение по умолчанию: `/etc/pgbackrest.conf`.

Используются следующие типы параметров:

**Строка**: текстовая строка, обычно идентификатор, пароль и т. п.

Пример командной строки: `--stanza=demo`<br/>Пример файла конфигурации: `repo1-cipher-pass=zWaf6XtpjIVZC5444yXB...`

**Путь**: однозначно определяет расположение в структуре каталогов. Путь должен начинаться с /; двойной // не допускается, завершающий / не ожидается.

Пример командной строки: `--repo1-path=/var/lib/pgbackrest`<br/>Пример файла конфигурации: `repo1-path=/var/lib/pgbackrest`

**Логическое значение**: включает или отключает параметр. Допустимы только значения аргумента y/n.

Примеры командной строки: `--start-fast`, `--no-start-fast`, `--start-fast=y`, `--start-fast=n`<br/>Примеры файла конфигурации: `start-fast=y`, `start-fast=n`

**Целое число**: используется для портов, количества хранимых копий или повторных попыток, допустимого числа параллельных процессов и т. п.

Пример командной строки: `--compress-level=3`<br/>Пример файла конфигурации: `pg1-port=5432`

**Размер**: используется для размеров буферов, объёма дискового пространства и т. п. Размер можно указать в байтах (по умолчанию) либо в KiB, MiB, GiB, TiB или PiB, где множитель равен степени 1024. Например, вместо 5368709120 можно использовать значение 5GiB (или 5GB, 5g) без учёта регистра. Дробные значения, такие как 2.5GiB, не допускаются; вместо них следует использовать 2560MiB.

Пример командной строки: `--archive-get-queue-max=1GiB`<br/>Пример файла конфигурации: `buffer-size=2MiB`

**Время**: время в секундах.

Пример командной строки: `--io-timeout=90`<br/>Пример файла конфигурации: `db-timeout=600`

**Список**: параметр можно указать несколько раз.

Пример командной строки: `--db-exclude=db1 --db-exclude=db2 --db-exclude=db5`

Пример файла конфигурации, каждое значение на отдельной строке:

```ini
db-exclude=db1
db-exclude=db2
db-exclude=db5
```

**Ключ/значение**: параметр можно указать несколько раз в форме `key=value`.

Пример командной строки: `--tablespace-map=ts_01=/db/ts_01 --tablespace-map=ts_02=/db/ts_02`

Пример файла конфигурации, каждое значение на отдельной строке:

```ini
tablespace-map=ts_01=/db/ts_01
tablespace-map=ts_02=/db/ts_02
```

--------

## Параметры архивирования {#archive-options}

Секция `archive` определяет параметры команд `archive-push` и `archive-get`.

### Параметр асинхронного архивирования (`--archive-async`) {#asynchronous-archiving-option---archive-async}

Асинхронная отправка и получение сегментов WAL.

Включает асинхронный режим работы команд `archive-push` и `archive-get`.

Асинхронный режим эффективнее, поскольку позволяет повторно использовать соединения и выполнять операции параллельно. Дополнительные сведения приведены в описании параметров `spool-path`, `archive-get-queue-max` и `archive-push-queue-max`.

```text
default: n
example: archive-async=y
```

### Параметр максимального размера очереди получения из архива (`--archive-get-queue-max`) {#maximum-archive-get-queue-size-option---archive-get-queue-max}

Максимальный размер очереди archive-get в pgBackRest.

Задаёт максимальный размер очереди `archive-get` при включённом `archive-async`. Очередь хранится в `spool-path` и ускоряет передачу WAL в PostgreSQL.

```text
default: 128MiB
allowed: [0B, 4PiB]
example: archive-get-queue-max=1GiB
```

### Параметр повторного запроса отсутствующего сегмента WAL (`--archive-missing-retry`) {#retry-missing-wal-segment-option---archive-missing-retry}

Повторный запрос отсутствующего сегмента WAL

Повторно запрашивает сегмент WAL, об отсутствии которого ранее сообщила команда `archive-get` в асинхронном режиме. Это предотвращает использование уведомлений в каталоге очереди, оставшихся от предыдущего восстановления, которые могли бы привести к сбою восстановления, если согласованность ещё не достигнута.

Отключение этого параметра позволяет PostgreSQL надёжнее определять достижение конца WAL в архиве и переключаться на потоковую передачу с первичного сервера. Если повторные запросы включены, непрерывное поступление WAL в архив заставляет PostgreSQL продолжать получать WAL из архива вместо переключения на потоковую передачу.

При отключении этого параметра важно убедиться, что каталог очереди для stanza пуст. Команда `restore` очищает его автоматически, если каталог очереди настроен на момент восстановления. В противном случае пользователь должен самостоятельно обеспечить его очистку.

```text
default: y
example: archive-missing-retry=n
```

### Параметр размера пакета отправки в архив (`--archive-push-batch-size`) {#archive-push-batch-size-option---archive-push-batch-size}

Максимальный объём WAL, отправляемый за один асинхронный запуск.

В асинхронном режиме процесс `archive-push` отправляет все готовые сегменты WAL за один запуск. Поскольку `archive-push-queue-max` проверяется только в начале каждого запуска, при обработке очень большого числа сегментов очередь может значительно превысить предел до следующей проверки.

Этот параметр ограничивает объём WAL, обрабатываемый за один запуск, после чего процесс завершается и вновь запускается следующим вызовом `archive-push`, который повторно проверяет очередь. Меньшие значения позволяют проверять очередь чаще, но требуют более частого запуска асинхронного процесса. Значение округляется вниз до целого числа сегментов WAL, однако всегда обрабатывается хотя бы один сегмент.

```text
default: 16GiB
allowed: [1MiB, 4PiB]
example: archive-push-batch-size=1GiB
```

### Параметр максимального размера очереди отправки в архив (`--archive-push-queue-max`) {#maximum-archive-push-queue-size-option---archive-push-queue-max}

Максимальный размер очереди архивирования PostgreSQL.

При достижении предела произойдёт следующее:

- pgBackRest сообщит PostgreSQL об успешном архивировании WAL, а затем **УДАЛИТ ЕГО**.
- В журнал PostgreSQL будет выведено предупреждение.

В этом случае поток архивного журнала прервётся, и PITR за этой точкой станет невозможен. Чтобы вновь обеспечить полные возможности восстановления, потребуется новая резервная копия.

В асинхронном режиме удаляется вся очередь, чтобы отдельные сегменты WAL не успевали попадать в архив до повторного превышения предела очереди.

В асинхронном режиме этот предел проверяется только в начале каждого запуска `archive-push`, поэтому за один запуск очередь может превысить его. Уменьшите `archive-push-batch-size`, чтобы проверять очередь чаще.

Эта возможность предотвращает заполнение тома с журналом, при котором PostgreSQL полностью остановится. Лучше потерять резервную копию, чем допустить остановку PostgreSQL.

```text
allowed: [0B, 4PiB]
example: archive-push-queue-max=1TiB
```

Устаревшее имя: archive-queue-max

### Параметр тайм-аута архивирования (`--archive-timeout`) {#archive-timeout-option---archive-timeout}

Тайм-аут архивирования.

Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам `check` и `backup`, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.

```text
default: 1m
allowed: [100ms, 1d]
example: archive-timeout=30
```

--------

## Параметры резервного копирования {#backup-options}

Секция `backup` определяет параметры резервного копирования.

### Параметр аннотации резервной копии (`--annotation`) {#backup-annotation-option---annotation}

Добавление к резервной копии пользовательских пар «ключ — значение».

Пользователи могут добавлять к резервной копии информационные пары «ключ — значение». Этот параметр можно указывать несколько раз для добавления нескольких аннотаций.

Аннотации включаются в текстовый вывод команды `info`, если резервная копия указана через `--set`, и всегда присутствуют в выводе JSON.

```text
example: annotation=source="Sunday backup for website database"
```

### Параметр проверки архива (`--archive-check`) {#check-archive-option---archive-check}

Проверка наличия сегментов WAL в архиве перед завершением резервного копирования.

Проверяет, что все сегменты WAL, необходимые для согласованности резервной копии, присутствуют в архиве WAL. Рекомендуется оставить значение по умолчанию, если не используется другой способ архивирования.

Этот параметр должен быть включён, если включён `archive-copy`.

```text
default: y
example: archive-check=n
```

### Параметр копирования архива (`--archive-copy`) {#copy-archive-option---archive-copy}

Копирование в резервную копию сегментов WAL, необходимых для согласованности.

Этот параметр обеспечивает дополнительную предосторожность: он защищает от повреждения архива сегментов WAL, сохраняя сегменты, необходимые для согласованности, непосредственно в резервной копии. Сегменты WAL по-прежнему сохраняются и в архиве, поэтому параметр увеличивает расход места.

При использовании этого параметра желательно, чтобы команды `archive-push` и `backup` имели одинаковый `compress-type` (например, `lz4`). Иначе сегменты WAL потребуется повторно сжать с `compress-type`, используемым резервной копией, что может потребовать значительных ресурсов в зависимости от объёма WAL, созданного во время резервного копирования.

При восстановлении сегменты WAL будут находиться в `pg_xlog/pg_wal`, и PostgreSQL предпочтёт использовать их, а не вызывать `restore_command`.

Параметр `archive-check` должен быть включён, если включён `archive-copy`.

```text
default: n
example: archive-copy=y
```

### Параметр проверки режима архивирования (`--archive-mode-check`) {#check-archive-mode-option---archive-mode-check}

Проверка настройки PostgreSQL `archive_mode`.

Этот параметр включён по умолчанию и запрещает использовать в PostgreSQL `archive_mode=always`.

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

ОСТОРОЖНО:

Если этот параметр отключён, крайне важно обеспечить, чтобы в репозиторий через команду `archive-push` писал только один процесс архивирования.

```text
default: y
example: archive-mode-check=n
```

### Параметр резервного копирования с резервного сервера (`--backup-standby`) {#backup-from-standby-option---backup-standby}

Резервное копирование с резервного кластера.

Включает резервное копирование с резервного сервера для снижения нагрузки на первичный кластер. Этот параметр требует настройки как первичного, так и резервного сервера.

Поддерживаются следующие режимы:

- `y` - Для резервного копирования необходим резервный сервер.
- `prefer` - Копирование с резервного сервера, если он доступен; иначе с первичного.
- `n` - Копирование только с первичного сервера.

```text
default: n
example: backup-standby=y
```

### Параметр контрольных сумм страниц (`--checksum-page`) {#page-checksums-option---checksum-page}

Проверка контрольных сумм страниц данных.

Указывает pgBackRest проверять контрольные суммы всех страниц данных при резервном копировании кластера. Этот параметр включается автоматически, если в кластере включены контрольные суммы страниц данных.

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

```text
example: checksum-page=n
```

### Параметр исключения путей и файлов (`--exclude`) {#pathfile-exclusions-option---exclude}

Исключение путей и файлов из резервной копии.

Все исключения задаются относительно `$PGDATA`. Если исключение заканчивается на /, исключаются только файлы в указанном каталоге: например, `--exclude=junk/` исключит все файлы в каталоге `$PGDATA/junk`, но сохранит сам каталог. Если исключение не заканчивается на /, файл может либо точно совпадать с исключением, либо соответствовать исключению с добавленным /: например, `--exclude=junk` исключит каталог `$PGDATA/junk` и все содержащиеся в нём файлы.

**Используйте эту возможность осторожно: очень легко исключить важные данные и нарушить согласованность резервной копии. Обязательно проверяйте восстановление!**

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

ПРИМЕЧАНИЕ:

При дельта-восстановлении исключения не учитываются. Все файлы и каталоги, исключённые при резервном копировании, будут *удалены* при дельта-восстановлении.

Этот параметр не следует использовать для исключения журналов PostgreSQL из резервной копии. Журналы можно вынести за пределы каталога `PGDATA` с помощью настройки PostgreSQL `log_directory`; при этом они также сохранятся после восстановления.

В командной строке или файле конфигурации можно задать несколько исключений.

```text
example: exclude=junk/
```

### Параметр автоматического удаления устаревших копий (`--expire-auto`) {#expire-auto-option---expire-auto}

Автоматический запуск команды `expire` после успешного резервного копирования.

Этот параметр включён по умолчанию. Отключать его следует с осторожностью: в этом случае все резервные копии и архивы будут храниться бессрочно, что может привести к исчерпанию места в репозитории. Чтобы избежать этого, необходимо регулярно запускать команду `expire`.

При автоматическом запуске после успешного резервного копирования `expire` использует конфигурацию команды `backup`, поэтому параметры, заданные только в секции команды `expire` (например, `[global:expire]`), не применяются. Чтобы применялась конфигурация, специфичная для `expire`, отключите этот параметр и запускайте команду `expire` отдельно.

```text
default: y
example: expire-auto=y
```

### Параметр порога сохранения манифеста (`--manifest-save-threshold`) {#manifest-save-threshold-option---manifest-save-threshold}

Порог сохранения манифеста при резервном копировании.

Определяет, как часто манифест сохраняется во время резервного копирования. Сохранять его важно, поскольку он содержит контрольные суммы и обеспечивает эффективное возобновление. Фактический порог равен большему из двух значений: 1% размера резервной копии или `manifest-save-threshold`.

```text
default: 1GiB
allowed: [1B, 1TiB]
example: manifest-save-threshold=8GiB
```

### Параметр возобновления (`--resume`) {#resume-option---resume}

Разрешение возобновления неудавшегося резервного копирования.

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

```text
default: y
example: resume=n
```

### Параметр быстрого запуска (`--start-fast`) {#start-fast-option---start-fast}

Принудительная контрольная точка для быстрого начала резервного копирования.

Принудительно выполняет контрольную точку, передавая `y` в параметр `fast` функции начала резервного копирования, чтобы копирование началось немедленно. Иначе резервное копирование начнётся после следующей плановой контрольной точки.

```text
default: n
example: start-fast=y
```

--------

## Общие параметры {#general-options}

Секция `general` определяет параметры, общие для многих команд.

### Параметр разрешения запуска от root (`--allow-root`) {#allow-run-as-root-option---allow-root}

Разрешение запуска команды от пользователя root.

По умолчанию только команда `restore` может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.

Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.

```text
default: n
example: allow-root=y
```

### Параметр размера буфера (`--buffer-size`) {#buffer-size-option---buffer-size}

Размер буфера для операций ввода-вывода.

Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие `gz` может потребовать дополнительно 256KiB памяти.

Допустимые значения: `16KiB`, `32KiB`, `64KiB`, `128KiB`, `256KiB`, `512KiB`, `1MiB`, `2MiB`, `4MiB`, `8MiB` и `16MiB`.

```text
default: 1MiB
example: buffer-size=2MiB
```

### Параметр команды pgBackRest (`--cmd`) {#pgbackrest-command-option---cmd}

Команда pgBackRest.

pgBackRest может формировать командную строку, например когда команда `restore` создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр `cmd`.

ОСТОРОЖНО:

Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.

```text
default: [path of executed pgbackrest binary]
example: cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
```

### Параметр команды SSH-клиента (`--cmd-ssh`) {#ssh-client-command-option---cmd-ssh}

Команда SSH-клиента.

Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда `ssh` отсутствует в $PATH.

```text
default: ssh
example: cmd-ssh=/usr/bin/ssh
```

### Параметр сжатия (`--compress`) {#compress-option---compress}

Сжатие файлов.

Файлы резервных копий совместимы с утилитами сжатия командной строки.

Этот параметр устарел. Вместо него следует использовать `compress-type`.

```text
default: y
example: compress=n
```

### Параметр уровня сжатия (`--compress-level`) {#compress-level-option---compress-level}

Уровень сжатия файлов.

Задаёт уровень сжатия файлов, когда `compress-type` не равен `none` или задано `compress=y` (устаревший вариант).

```text
default (depending on compress-type):
    bz2 - 9
    gz - 6
    lz4 - 1
    zst - 3

allow range (depending on compress-type):
    bz2 - [1, 9]
    gz - [-1, 9]
    lz4 - [-5, 12]
    zst - [-7, 22]

example: compress-level=9
```

### Параметр уровня сжатия для сети (`--compress-level-network`) {#network-compress-level-option---compress-level-network}

Уровень сжатия для передачи по сети.

Задаёт уровень сетевого сжатия, когда `compress-type=none` и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда `compress-type` не равен `none`, настройка `compress-level-network` игнорируется и вместо неё используется `compress-level`, чтобы файл сжимался только один раз.

```text
default: 1
allowed: [-5, 12]
example: compress-level-network=1
```

### Параметр типа сжатия (`--compress-type`) {#compress-type-option---compress-type}

Тип сжатия файлов.

Поддерживаются следующие типы сжатия:

- `none` - без сжатия
- `bz2` - формат сжатия bzip2
- `gz` - формат сжатия gzip
- `lz4` - формат сжатия lz4 (доступен не на всех платформах)
- `zst` - формат сжатия Zstandard (доступен не на всех платформах)

```text
default: gz
example: compress-type=none
```

### Параметр тайм-аута базы данных (`--db-timeout`) {#database-timeout-option---db-timeout}

Тайм-аут запроса к базе данных.

Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано `start-fast=y` и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).

ПРИМЕЧАНИЕ:

Параметр `db-timeout` должен быть меньше `protocol-timeout`.

```text
default: 30m
allowed: [100ms, 7d]
example: db-timeout=600
```

### Параметр дельта-восстановления и копирования (`--delta`) {#delta-option---delta}

Восстановление или резервное копирование с использованием контрольных сумм.

При восстановлении по умолчанию предполагается, что каталоги данных и табличных пространств PostgreSQL существуют, но пусты. Этот параметр выполняет дельта-восстановление с использованием контрольных сумм.

При резервном копировании этот параметр использует контрольные суммы вместо временных меток, чтобы определить, нужно ли копировать файлы.

```text
default: n
example: delta=y
```

### Параметр тайм-аута ввода-вывода (`--io-timeout`) {#io-timeout-option---io-timeout}

Тайм-аут ввода-вывода.

Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.

Операция чтения или записи не обязана полностью завершиться за это время, но *какое-то* продвижение должно произойти, хотя бы на один байт.

```text
default: 1m
allowed: [100ms, 1h]
example: io-timeout=120
```

### Параметр каталога блокировок (`--lock-path`) {#lock-path-option---lock-path}

Путь для хранения файлов блокировок.

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

```text
default: /tmp/pgbackrest
example: lock-path=/backup/db/lock
```

### Параметр нейтральной маски umask (`--neutral-umask`) {#neutral-umask-option---neutral-umask}

Использование нейтральной маски umask.

Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.

Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите `neutral-umask=n` в файле конфигурации или `--no-neutral-umask` в командной строке.

```text
default: y
example: neutral-umask=n
```

### Параметр приоритета процесса (`--priority`) {#set-process-priority-option---priority}

Установка приоритета процесса.

Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.

```text
allowed: [-20, 19]
example: priority=19
```

### Параметр максимального числа процессов (`--process-max`) {#process-maximum-option---process-max}

Максимальное число процессов для сжатия и передачи данных.

Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать `process-max` настолько большим, чтобы это ухудшало производительность базы данных.

```text
default: 1
allowed: [1, 999]
example: process-max=4
```

### Параметр тайм-аута протокола (`--protocol-timeout`) {#protocol-timeout-option---protocol-timeout}

Тайм-аут протокола.

Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.

ПРИМЕЧАНИЕ:

Параметр `protocol-timeout` должен быть больше `db-timeout`.

```text
default: 31m
allowed: [100ms, 7d]
example: protocol-timeout=630
```

### Параметр поддержания соединения (`--sck-keep-alive`) {#keep-alive-option---sck-keep-alive}

Включение поддержания соединения.

Включает сообщения keep-alive для сокетных соединений.

```text
default: y
example: sck-keep-alive=n
```

### Параметр каталога очереди (`--spool-path`) {#spool-path-option---spool-path}

Путь для хранения промежуточных данных.

Этот каталог используется для хранения данных асинхронных команд `archive-push` и `archive-get`.

Асинхронная команда `archive-push` записывает подтверждения в каталог очереди после успешного сохранения WAL в архиве (а при сбое — сообщения об ошибках), чтобы процесс переднего плана мог быстро уведомить PostgreSQL. Файлы подтверждений очень малы: нулевого размера при успехе и несколько сотен байтов при ошибке.

Асинхронная команда `archive-get` помещает WAL в очередь в каталоге очереди, чтобы быстро передавать его по запросу PostgreSQL. Перемещение файлов в PostgreSQL наиболее эффективно, когда каталог очереди находится в той же файловой системе, что и `pg_xlog`/`pg_wal`. Однако не рекомендуется размещать каталог очереди *внутри* `pg_xlog`/`pg_wal`, поскольку это может вызвать проблемы у утилит PostgreSQL, таких как `pg_rewind`.

Данные в каталоге очереди нельзя считать строго временными: они могут сохраняться после перезагрузки, и их следует сохранять. Однако их потеря не представляет проблемы. pgBackRest просто повторно проверит каждый сегмент WAL, чтобы убедиться в его надёжном архивировании для `archive-push`, и заново построит очередь для `archive-get`.

Каталог очереди предназначен для размещения в локальной файловой системе, совместимой с Posix, а не в удалённой файловой системе, такой как NFS или CIFS.

```text
default: /var/spool/pgbackrest
example: spool-path=/backup/db/spool
```

### Параметр числа сообщений keep-alive (`--tcp-keep-alive-count`) {#keep-alive-count-option---tcp-keep-alive-count}

Число сообщений keep-alive.

Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.

Этот параметр доступен на системах, которые поддерживают опцию сокета `TCP_KEEPCNT`.

```text
allowed: [1, 32]
example: tcp-keep-alive-count=3
```

### Параметр времени простоя keep-alive (`--tcp-keep-alive-idle`) {#keep-alive-idle-option---tcp-keep-alive-idle}

Время простоя перед отправкой keep-alive.

Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.

Этот параметр доступен на системах, которые поддерживают опцию сокета `TCP_KEEPIDLE`.

```text
allowed: [1, 3600]
example: tcp-keep-alive-idle=60
```

### Параметр интервала keep-alive (`--tcp-keep-alive-interval`) {#keep-alive-interval-option---tcp-keep-alive-interval}

Интервал сообщений keep-alive.

Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.

Этот параметр доступен на системах, которые поддерживают опцию сокета `TCP_KEEPINTVL`.

```text
allowed: [1, 900]
example: tcp-keep-alive-interval=30
```

### Параметр наборов шифров TLSv1.2 (`--tls-cipher-12`) {#tlsv12-cipher-suites-option---tls-cipher-12}

Допустимые наборы шифров TLSv1.2.

Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).

ПРИМЕЧАНИЕ:

Абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.

При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.

```text
example: tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
```

### Параметр наборов шифров TLSv1.3 (`--tls-cipher-13`) {#tlsv13-cipher-suites-option---tls-cipher-13}

Допустимые наборы шифров TLSv1.3.

Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).

ПРИМЕЧАНИЕ:

Абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.

При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.

```text
example: tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
```

--------

## Параметры журналирования {#log-options}

Секция `log` определяет параметры ведения журнала.

ОСТОРОЖНО:

Журналирование на уровне trace может раскрыть секретные данные, такие как ключи и пароли. Используйте его осторожно!

### Параметр уровня журналирования в консоль (`--log-level-console`) {#console-log-level-option---log-level-console}

Уровень журналирования в консоль.

Поддерживаются следующие уровни журналирования:

- `off` - Журналирование отключено (не рекомендуется)
- `error` - Только ошибки
- `warn` - Предупреждения и ошибки
- `info` - Информационные сообщения, предупреждения и ошибки
- `detail` - Подробные и информационные сообщения, предупреждения и ошибки
- `debug` - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
- `trace` - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки

```text
default: warn
example: log-level-console=error
```

### Параметр уровня журналирования в файл (`--log-level-file`) {#file-log-level-option---log-level-file}

Уровень журналирования в файл.

Поддерживаются следующие уровни журналирования:

- `off` - Журналирование отключено (не рекомендуется)
- `error` - Только ошибки
- `warn` - Предупреждения и ошибки
- `info` - Информационные сообщения, предупреждения и ошибки
- `detail` - Подробные и информационные сообщения, предупреждения и ошибки
- `debug` - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
- `trace` - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки

```text
default: info
example: log-level-file=debug
```

### Параметр уровня журналирования в стандартный поток ошибок (`--log-level-stderr`) {#std-error-log-level-option---log-level-stderr}

Уровень ведения журнала для stderr.

Задаёт уровни журнала, сообщения которых выводятся в `stderr`, а не в `stdout` (задаваемый параметром `log-level-console`). Временная метка и процесс в `stderr` не выводятся.

Поддерживаются следующие уровни журналирования:

- `off` - Журналирование отключено (не рекомендуется)
- `error` - Только ошибки
- `warn` - Предупреждения и ошибки
- `info` - Информационные сообщения, предупреждения и ошибки
- `detail` - Подробные и информационные сообщения, предупреждения и ошибки
- `debug` - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
- `trace` - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки

```text
default: off
example: log-level-stderr=error
```

### Параметр каталога журналов (`--log-path`) {#log-path-option---log-path}

Путь, по которому хранятся файлы журналов.

Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если `log-level-file=off`, то путь к журналу не требуется.

```text
default: /var/log/pgbackrest
example: log-path=/backup/db/log
```

### Параметр журналирования подпроцессов (`--log-subprocess`) {#log-subprocesses-option---log-subprocess}

Включение журналирования в подпроцессах.

Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром `log-level-file`.

```text
default: n
example: log-subprocess=y
```

### Параметр временных меток журнала (`--log-timestamp`) {#log-timestamp-option---log-timestamp}

Включение временных меток в журнале.

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

```text
default: y
example: log-timestamp=n
```

--------

## Параметры для сопровождающих {#maintainer-options}

Параметры для сопровождающих предназначены для поддержки форков PostgreSQL. Сопровождающему форка следует определить подходящие значения и затем сообщить их пользователям форка.

ПРЕДУПРЕЖДЕНИЕ:

Неправильное использование этих параметров может привести к неожиданному поведению или повреждению данных.

Сопровождающий форка отвечает за тестирование pgBackRest с требуемыми параметрами. pgBackRest не гарантирует совместимость ни с одним форком.

### Параметр проверки заголовков WAL (`--archive-header-check`) {#check-wal-headers-option---archive-header-check}

Проверка версии и идентификатора PostgreSQL в заголовках WAL.

Этот параметр включён по умолчанию и проверяет соответствие заголовка WAL версии PostgreSQL и системному идентификатору, чтобы убедиться, что WAL копируется в правильную stanza. Эта проверка дополняет проверку соответствия `pg_control` stanza и проверку того, что WAL копируется из того же каталога данных PostgreSQL, где находится `pg_control`.

Поэтому отключение этой проверки достаточно безопасно, но делать это следует только при необходимости, например если WAL зашифрован.

```text
default: y
example: archive-header-check=n
```

### Параметр проверки заголовков страниц (`--page-header-check`) {#page-header-check-option---page-header-check}

Проверка заголовков страниц PostgreSQL.

Этот параметр включён по умолчанию и добавляет проверки заголовков страниц.

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

```text
default: y
example: page-header-check=n
```

### Параметр принудительного задания версии PostgreSQL (`--pg-version-force`) {#force-postgresql-version-option---pg-version-force}

Принудительное задание версии PostgreSQL.

Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по `pg_control` или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через `server_version_num`, должна совпадать с принудительно заданной.

ПРЕДУПРЕЖДЕНИЕ:

Используйте этот параметр осторожно: `pg_control` и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур *после* стандартных полей PostgreSQL.

```text
example: pg-version-force=15
```

--------

## Параметры репозитория {#repository-options}

Секция `repository` определяет параметры настройки репозитория.

**Индексация**: все параметры `repo-` имеют индексы, что позволяет настраивать несколько репозиториев. Например, один репозиторий настраивается параметрами `repo1-path`, `repo1-host` и т. п. Если настроено несколько репозиториев и для команды не указан параметр `--repo`, действия с репозиториями выполняются в порядке убывания приоритета (например, сначала repo1, затем repo2).

Параметры `repo-retention-*` определяют срок хранения резервных копий. Удаление происходит только тогда, когда число завершённых резервных копий превышает заданное число хранимых копий. Иными словами, если `repo1-retention-full-type` равен `count` (по умолчанию), а `repo1-retention-full` равен 2, то для удаления самой старой копии должны существовать 3 завершённые копии. Если `repo1-retention-full-type` равен `time`, значение `repo1-retention-full` задаётся в днях, поэтому до удаления должны накопиться полные резервные копии хотя бы за указанное число дней. Убедитесь, что места всегда хватает для числа копий, заданного сроком хранения, + 1 резервной копии.

### Параметр учётной записи репозитория Azure (`--repo-azure-account`) {#azure-repository-account-option---repo-azure-account}

Учётная запись репозитория Azure.

Учётная запись Azure для хранения репозитория.

```text
example: repo1-azure-account=pg-backup
```

### Параметр контейнера репозитория Azure (`--repo-azure-container`) {#azure-repository-container-option---repo-azure-container}

Контейнер репозитория Azure.

Контейнер Azure для хранения репозитория.

Репозитории pgBackRest можно хранить в корне контейнера, задав `repo-path=/`, но обычно лучше указать префикс, например `/repo`, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.

```text
example: repo1-azure-container=pg-backup
```

### Параметр конечной точки репозитория Azure (`--repo-azure-endpoint`) {#azure-repository-endpoint-option---repo-azure-endpoint}

Конечная точка репозитория Azure.

Конечная точка для соединения со службой BLOB-объектов. Значение по умолчанию обычно подходит, если не используется Azure Government.

Для нестандартных или тестовых конфигураций могут быть полезны параметры `repo-storage-ca-file`, `repo-storage-ca-path`, `repo-storage-host`, `repo-storage-port` и `repo-storage-verify-tls`.

```text
default: blob.core.windows.net
example: repo1-azure-endpoint=blob.core.usgovcloudapi.net
```

### Параметр ключа репозитория Azure (`--repo-azure-key`) {#azure-repository-key-option---repo-azure-key}

Ключ репозитория Azure.

Общий ключ или подпись общего доступа в зависимости от параметра `repo-azure-key-type`.

```text
example: repo1-azure-key=T+9+aov82qNhrcXSNGZCzm9mjd4d75/oxxOr6r1JVpgTLA==
```

### Параметр типа ключа репозитория Azure (`--repo-azure-key-type`) {#azure-repository-key-type-option---repo-azure-key-type}

Тип ключа репозитория Azure.

Для авторизации поддерживаются следующие типы:

- `shared` - Общий ключ
- `sas` - Подпись общего доступа
- `auto` - Автоматическая авторизация с использованием управляемых удостоверений Azure

```text
default: shared
example: repo1-azure-key-type=sas
```

### Параметр стиля URI репозитория Azure (`--repo-azure-uri-style`) {#azure-repository-uri-style-option---repo-azure-uri-style}

Стиль URI Azure.

Поддерживаются следующие стили URI:

- `host` - Соединение с узлом `account.endpoint`.
- `path` - Соединение с узлом `endpoint` с добавлением учётной записи в начало URI.

```text
default: host
example: repo1-azure-uri-style=path
```

### Параметр поблочного инкрементного резервного копирования (`--repo-block`) {#block-incremental-backup-option---repo-block}

Включение поблочного инкрементного резервного копирования.

Поблочное инкрементное копирование позволяет создавать более детальные резервные копии, разбивая файлы на блоки, которые можно копировать независимо. Это экономит место в репозитории и может ускорить дельта-восстановление, поскольку отдельные блоки можно получать без чтения всего файла из репозитория.

ПРИМЕЧАНИЕ:

Прежде чем включить `repo-block`, необходимо включить параметр `repo-bundle`.

Размер блока определяется размером и возрастом файла. Как правило, для более старых или крупных файлов выбираются более крупные блоки. Если файл достаточно старый, поблочное инкрементное копирование для него не используется.

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

```text
default: n
example: repo1-block=y
```

### Параметр пакетирования файлов в репозитории (`--repo-bundle`) {#repository-bundles-option---repo-bundle}

Пакетирование файлов в репозитории.

Объединяет небольшие файлы в пакеты, уменьшая общее число файлов, записываемых в репозиторий. Записывать меньше файлов обычно эффективнее, особенно в объектные хранилища, такие как S3. Кроме того, файлы нулевого размера не сохраняются (кроме записей в манифесте), что экономит время и место.

```text
default: n
example: repo1-bundle=y
```

### Параметр предельного размера файла в пакете репозитория (`--repo-bundle-limit`) {#repository-bundle-limit-option---repo-bundle-limit}

Предельный размер файлов для пакетирования.

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

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

```text
default: 2MiB
allowed: [8KiB, 1PiB]
example: repo1-bundle-limit=10MiB
```

### Параметр размера пакета репозитория (`--repo-bundle-size`) {#repository-bundle-size-option---repo-bundle-size}

Целевой размер пакета файлов.

Определяет целевой суммарный размер файлов, добавляемых в один пакет. Несжатый пакет может достигать размера `repo-bundle-size` + `repo-bundle-limit`, поэтому не следует задавать этому параметру максимальный размер, допустимый файловой системой.

Как правило, слишком большое значение нежелательно: при повторной попытке потребуется заново обработать весь пакет.

```text
default: 20MiB
allowed: [1MiB, 1PiB]
example: repo1-bundle-size=10MiB
```

### Параметр парольной фразы шифрования репозитория (`--repo-cipher-pass`) {#repository-cipher-passphrase-option---repo-cipher-pass}

Парольная фраза шифрования репозитория.

Парольная фраза для шифрования и расшифрования файлов репозитория.

ПРИМЕЧАНИЕ:

При запуске без параметра `stanza` команда `info` читает настройки шифрования только из секции `global`. Если настройки шифрования заданы отдельно для каждой stanza, для чтения зашифрованной stanza следует запускать команду `info` с параметром `stanza`.

```text
example: repo1-cipher-pass=zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO
```

### Параметр типа шифрования репозитория (`--repo-cipher-type`) {#repository-cipher-type-option---repo-cipher-type}

Шифр для шифрования репозитория.

Поддерживаются следующие типы шифрования:

- `none` - Репозиторий не зашифрован
- `aes-256-cbc` - Advanced Encryption Standard с длиной ключа 256 бит

Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.

```text
default: none
example: repo1-cipher-type=aes-256-cbc
```

### Параметр бакета репозитория GCS (`--repo-gcs-bucket`) {#gcs-repository-bucket-option---repo-gcs-bucket}

Бакет репозитория GCS.

Бакет GCS для хранения репозитория.

Репозитории pgBackRest можно хранить в корне бакета, задав `repo-path=/`, но обычно лучше указать префикс, например `/repo`, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.

```text
example: repo1-gcs-bucket=/pg-backup
```

### Параметр конечной точки репозитория GCS (`--repo-gcs-endpoint`) {#gcs-repository-endpoint-option---repo-gcs-endpoint}

Конечная точка репозитория GCS.

Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.

```text
default: storage.googleapis.com
example: repo1-gcs-endpoint=localhost
```

### Параметр ключа репозитория GCS (`--repo-gcs-key`) {#gcs-repository-key-option---repo-gcs-key}

Ключ репозитория GCS.

Токен или файл ключа служебной учётной записи в зависимости от параметра `repo-gcs-key-type`.

```text
example: repo1-gcs-key=/etc/pgbackrest/gcs-key.json
```

### Параметр типа ключа репозитория GCS (`--repo-gcs-key-type`) {#gcs-repository-key-type-option---repo-gcs-key-type}

Тип ключа репозитория GCS.

Для авторизации поддерживаются следующие типы:

- `auto` - Авторизация с помощью служебной учётной записи экземпляра.
- `service` - Служебная учётная запись из локально сохранённого ключа.
- `token` - Для локального тестирования, например с `fakegcs`.

При `repo-gcs-key-type=service` учётные данные повторно загружаются при обновлении токена аутентификации.

```text
default: service
example: repo1-gcs-key-type=auto
```

### Параметр идентификатора проекта репозитория GCS (`--repo-gcs-user-project`) {#gcs-repository-project-id-option---repo-gcs-user-project}

Идентификатор проекта GCS.

Идентификатор проекта GCS, определяющий оплату запросов.

```text
example: repo1-gcs-user-project=my-project
```

### Параметр жёстких ссылок в репозитории (`--repo-hardlink`) {#repository-hardlink-option---repo-hardlink}

Жёсткие ссылки между файлами резервных копий в репозитории.

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

```text
default: n
example: repo1-hardlink=y
```

Устаревшее имя: hardlink

### Параметр сервера репозитория (`--repo-host`) {#repository-host-option---repo-host}

Сервер репозитория при удалённой работе.

При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.

```text
example: repo1-host=repo1.domain.com
```

Устаревшее имя: backup-host

### Параметр файла центра сертификации сервера репозитория (`--repo-host-ca-file`) {#repository-host-certificate-authority-file-option---repo-host-ca-file}

Файл центра сертификации сервера репозитория.

Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.

```text
example: repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
```

### Параметр каталога центра сертификации сервера репозитория (`--repo-host-ca-path`) {#repository-host-certificate-authority-path-option---repo-host-ca-path}

Каталог центра сертификации сервера репозитория.

Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.

```text
example: repo1-host-ca-path=/etc/pki/tls/certs
```

### Параметр файла сертификата сервера репозитория (`--repo-host-cert-file`) {#repository-host-certificate-file-option---repo-host-cert-file}

Файл сертификата для сервера репозитория.

Отправляется серверу репозитория для подтверждения личности клиента.

```text
example: repo1-host-cert-file=/path/to/client.crt
```

### Параметр команды на сервере репозитория (`--repo-host-cmd`) {#repository-host-command-option---repo-host-cmd}

Команда pgBackRest на сервере репозитория.

Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.

```text
default: [path of executed pgbackrest binary]
example: repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
```

Устаревшее имя: backup-cmd

### Параметр файла конфигурации сервера репозитория (`--repo-host-config`) {#repository-host-configuration-option---repo-host-config}

Файл конфигурации pgBackRest на сервере репозитория.

Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.

```text
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: repo1-host-config=/conf/pgbackrest/pgbackrest.conf
```

Устаревшее имя: backup-config

### Параметр каталога включаемых конфигураций сервера репозитория (`--repo-host-config-include-path`) {#repository-host-configuration-include-path-option---repo-host-config-include-path}

Каталог включаемых конфигураций pgBackRest на сервере репозитория.

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

```text
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: repo1-host-config-include-path=/conf/pgbackrest/conf.d
```

### Параметр каталога конфигурации сервера репозитория (`--repo-host-config-path`) {#repository-host-configuration-path-option---repo-host-config-path}

Каталог конфигурации pgBackRest на сервере репозитория.

Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.

```text
default: CFGOPTDEF_CONFIG_PATH
example: repo1-host-config-path=/conf/pgbackrest
```

### Параметр файла ключа для сервера репозитория (`--repo-host-key-file`) {#repository-host-key-file-option---repo-host-key-file}

Файл ключа для сервера репозитория.

Подтверждает, что сертификат клиента отправлен его владельцем.

```text
example: repo1-host-key-file=/path/to/client.key
```

### Параметр порта сервера репозитория (`--repo-host-port`) {#repository-host-port-option---repo-host-port}

Порт сервера репозитория при заданном `repo-host`.

Позволяет указать нестандартный порт для протокола сервера репозитория.

ПРИМЕЧАНИЕ:

При `repo-host-type=ssh` для `repo-host-port` нет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной в `cmd-ssh`.

```text
default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: repo1-host-port=25
```

Устаревшее имя: backup-ssh-port

### Параметр типа протокола сервера репозитория (`--repo-host-type`) {#repository-host-protocol-type-option---repo-host-type}

Тип протокола сервера репозитория.

Поддерживаются следующие типы протоколов:

- `ssh` - Secure Shell.
- `tls` - TLS-сервер pgBackRest.

```text
default: ssh
example: repo1-host-type=tls
```

### Параметр пользователя сервера репозитория (`--repo-host-user`) {#repository-host-user-option---repo-host-user}

Пользователь сервера репозитория при заданном `repo-host`.

Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не `postgres`, а другого пользователя, например `pgbackrest`. Если PostgreSQL работает на сервере репозитория, пользователя `postgres` можно включить в группу `pgbackrest`, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.

```text
default: pgbackrest
example: repo1-host-user=repo-user
```

Устаревшее имя: backup-user

### Параметр пути репозитория (`--repo-path`) {#repository-path-option---repo-path}

Путь для хранения резервных копий и архива.

В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.

Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.

```text
default: /var/lib/pgbackrest
example: repo1-path=/backup/db/backrest
```

### Параметр хранения архива (`--repo-retention-archive`) {#archive-retention-option---repo-retention-archive}

Число резервных копий, для которых сохраняется непрерывный WAL.

ПРИМЕЧАНИЕ:

Сегменты WAL, необходимые для согласованности резервной копии, всегда сохраняются до удаления этой копии независимо от настройки данного параметра.

Если значение не задано, а `repo-retention-full-type` равен `count` (по умолчанию), то для удаления архива по умолчанию используется значение `repo-retention-full` (или `repo-retention-diff`), соответствующее `repo-retention-archive-type`, заданному как `full` (или `diff`). Это гарантирует, что WAL удаляется только для уже удалённых резервных копий. Если `repo-retention-full-type` равен `time`, по умолчанию удаляются архивы, предшествующие самой старой полной копии, оставшейся после применения настройки `repo-retention-full`.

Этот параметр должен быть задан, если `repo-retention-archive-type` равен `incr`. При острой нехватке дискового пространства он вместе с `repo-retention-archive-type` позволяет агрессивнее удалять сегменты WAL. Однако это исключает возможность PITR из копий с удалённым WAL и потому **не** рекомендуется.

```text
allowed: [1, 9999999]
example: repo1-retention-archive=2
```

Устаревшее имя: retention-archive

### Параметр типа хранения архива (`--repo-retention-archive-type`) {#archive-retention-type-option---repo-retention-archive-type}

Тип резервных копий для хранения WAL.

При значении `full` pgBackRest сохраняет архивные журналы для числа полных резервных копий, заданного `repo-retention-archive`. При значении `diff` (дифференциальные) pgBackRest сохраняет архивные журналы для числа полных и дифференциальных копий, заданного `repo-retention-archive`: если последняя копия полная, для целей хранения в репозитории она учитывается как дифференциальная. При значении `incr` (инкрементные) pgBackRest сохраняет архивные журналы для числа полных, дифференциальных и инкрементных копий, заданного `repo-retention-archive`. Рекомендуется оставить значение по умолчанию, при котором WAL удаляется только вместе с полными резервными копиями.

```text
default: full
example: repo1-retention-archive-type=diff
```

Устаревшее имя: retention-archive-type

### Параметр хранения дифференциальных копий (`--repo-retention-diff`) {#differential-retention-option---repo-retention-diff}

Число сохраняемых дифференциальных резервных копий.

При удалении дифференциальной копии также удаляются все связанные с ней инкрементные копии. Если параметр не задан, все дифференциальные копии сохраняются до удаления полных копий, от которых они зависят.

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

```text
allowed: [1, 9999999]
example: repo1-retention-diff=3
```

Устаревшее имя: retention-diff

### Параметр хранения полных копий (`--repo-retention-full`) {#full-retention-option---repo-retention-full}

Число или срок хранения полных резервных копий.

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

```text
allowed: [1, 9999999]
example: repo1-retention-full=2
```

Устаревшее имя: retention-full

### Параметр типа хранения полных копий (`--repo-retention-full-type`) {#full-retention-type-option---repo-retention-full-type}

Тип срока хранения полных резервных копий.

Определяет, означает ли настройка `repo-retention-full` период времени (в днях) или число полных копий, которые нужно сохранять.

При значении `time` полные копии старше `repo-retention-full` удаляются из репозитория, если существует хотя бы ещё одна копия, возраст которой не меньше значения `repo-retention-full`. Например, если `repo-retention-full` равен 30 (дней) и есть 2 полные копии возрастом 25 и 35 дней, ни одна не будет удалена: после удаления копии возрастом 35 дней останется только копия возрастом 25 дней, что нарушит политику хранения за 30 дней. Эта политика требует наличия хотя бы одной копии возрастом 30 дней перед удалением более старой. Архивный WAL, предшествующий самой старой оставшейся полной копии, удаляется автоматически, если `repo-retention-archive-type` и `repo-retention-archive` не заданы явно.

При значении `count` полные копии сверх числа `repo-retention-full` удаляются. Например, если `repo-retention-full` равен `4` и завершается пятая полная копия, самая старая полная копия будет удалена, чтобы их число осталось равным 4.

Резервная копия учитывается при применении политики хранения только после успешного завершения. Например, если `repo-retention-full-type` равен `count`, а `repo-retention-full` равен `2`, для удаления самой старой копии должны существовать 3 завершённые полные копии.

```text
default: count
example: repo1-retention-full-type=time
```

### Параметр хранения истории резервных копий (`--repo-retention-history`) {#backup-history-retention-option---repo-retention-history}

Число дней хранения манифестов истории резервных копий.

После завершения резервного копирования копия манифеста сохраняется в каталоге `backup.history`. По умолчанию эти файлы никогда не удаляются, поскольку полезны для анализа данных, например для измерения роста резервных копий и WAL со временем.

Параметр `repo-retention-history` задаёт число дней хранения манифестов истории резервных копий. Неудалённые резервные копии всегда сохраняются в истории. Укажите `repo-retention-history=0`, чтобы хранить историю только для неудалённых резервных копий.

При удалении манифеста истории полной резервной копии также удаляются манифесты истории всех связанных с ней дифференциальных и инкрементных копий.

```text
allowed: [0, 9999999]
example: repo1-retention-history=365
```

### Параметр бакета репозитория S3 (`--repo-s3-bucket`) {#s3-repository-bucket-option---repo-s3-bucket}

Бакет репозитория S3.

Бакет S3 для хранения репозитория.

Репозитории pgBackRest можно хранить в корне бакета, задав `repo-path=/`, но обычно лучше указать префикс, например `/repo`, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.

```text
example: repo1-s3-bucket=pg-backup
```

### Параметр конечной точки репозитория S3 (`--repo-s3-endpoint`) {#s3-repository-endpoint-option---repo-s3-endpoint}

Конечная точка репозитория S3.

Следует использовать конечную точку AWS, допустимую для выбранного региона.

Для нестандартных или тестовых конфигураций могут быть полезны параметры `repo-storage-ca-file`, `repo-storage-ca-path`, `repo-storage-host`, `repo-storage-port` и `repo-storage-verify-tls`.

```text
example: repo1-s3-endpoint=s3.amazonaws.com
```

### Параметр ключа доступа к репозиторию S3 (`--repo-s3-key`) {#s3-repository-access-key-option---repo-s3-key}

Ключ доступа к репозиторию S3.

Ключ AWS для доступа к этому бакету.

```text
example: repo1-s3-key=AKIAIOSFODNN7EXAMPLE
```

### Параметр секретного ключа доступа к репозиторию S3 (`--repo-s3-key-secret`) {#s3-repository-secret-access-key-option---repo-s3-key-secret}

Секретный ключ доступа к репозиторию S3.

Секретный ключ AWS для доступа к этому бакету.

```text
example: repo1-s3-key-secret=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### Параметр типа ключа репозитория S3 (`--repo-s3-key-type`) {#s3-repository-key-type-option---repo-s3-key-type}

Тип ключа репозитория S3.

Поддерживаются следующие типы:

- `shared` - Общие ключи
- `auto` - Автоматическое получение временных учётных данных
- `web-id` - Автоматическое получение учётных данных веб-идентификации
- `pod-id` - Автоматическое получение учётных данных EKS Pod Identity
- `process` - Получение учётных данных запуском процесса

```text
default: shared
example: repo1-s3-key-type=auto
```

### Параметр идентификатора ключа KMS репозитория S3 (`--repo-s3-kms-key-id`) {#s3-repository-kms-key-id-option---repo-s3-kms-key-id}

Ключ KMS репозитория S3.

Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.

```text
example: repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
```

### Параметр команды процесса аутентификации S3 (`--repo-s3-process-cmd`) {#s3-authentication-process-command-option---repo-s3-process-cmd}

Команда процесса аутентификации S3.

Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.

Процесс должен вывести JSON с полями `AccessKeyId`, `SecretAccessKey`, `SessionToken` и `Expiration`. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе [Поставщик учётных данных через процесс](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html#feature-process-credentials-output).

```text
example: repo1-s3-process-cmd=/usr/local/bin/get-credentials
example: repo1-s3-process-cmd=--role
example: repo1-s3-process-cmd=my-role
```

### Параметр региона репозитория S3 (`--repo-s3-region`) {#s3-repository-region-option---repo-s3-region}

Регион репозитория S3.

Регион AWS, в котором создан бакет.

```text
example: repo1-s3-region=us-east-1
```

### Параметр оплаты запросов отправителем в репозитории S3 (`--repo-s3-requester-pays`) {#s3-repository-requestor-pays-option---repo-s3-requester-pays}

Оплата запросов отправителем в репозитории S3.

Включает в S3 оплату запросов отправителем.

```text
default: n
example: repo1-s3-requester-pays=n
```

### Параметр роли репозитория S3 (`--repo-s3-role`) {#s3-repository-role-option---repo-s3-role}

Роль репозитория S3.

Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при `repo-s3-key-type=auto`.

```text
example: repo1-s3-role=authrole
```

### Параметр службы репозитория S3 (`--repo-s3-service`) {#s3-repository-service-option---repo-s3-service}

Служба подписывания S3.

Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется `s3`. При использовании конечной точки S3 Outposts задайте `s3-outposts`.

```text
default: s3
example: repo1-s3-service=s3-outposts
```

### Параметр клиентского ключа SSE репозитория S3 (`--repo-s3-sse-customer-key`) {#s3-repository-sse-customer-key-option---repo-s3-sse-customer-key}

Клиентский ключ SSE репозитория S3.

Включает шифрование на стороне сервера S3 с указанным клиентским ключом.

```text
example: repo1-s3-sse-customer-key=bceb4f13-6939-4be3-910d-df54dee817b7
```

### Параметр конечной точки STS репозитория S3 (`--repo-s3-sts-host`) {#s3-repository-sts-endpoint-option---repo-s3-sts-host}

Конечная точка STS репозитория S3.

Конечная точка STS для получения временных учётных данных при `repo-s3-key-type=web-id`. Укажите региональную конечную точку (например, `sts.us-east-1.amazonaws.com`) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.

```text
default: sts.amazonaws.com
example: repo1-s3-sts-host=sts.us-east-1.amazonaws.com
```

### Параметр токена безопасности репозитория S3 (`--repo-s3-token`) {#s3-repository-security-token-option---repo-s3-token}

Токен безопасности репозитория S3.

Токен безопасности AWS, используемый с временными учётными данными.

```text
example: repo1-s3-token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22 ...
```

### Параметр стиля URI репозитория S3 (`--repo-s3-uri-style`) {#s3-repository-uri-style-option---repo-s3-uri-style}

Стиль URI S3.

Поддерживаются следующие стили URI:

- `host` - Соединение с узлом `bucket.endpoint`.
- `path` - Соединение с узлом `endpoint` с добавлением бакета в начало URI.

```text
default: host
example: repo1-s3-uri-style=path
```

### Параметр сервера репозитория SFTP (`--repo-sftp-host`) {#sftp-repository-host-option---repo-sftp-host}

Сервер репозитория SFTP.

Сервер SFTP, на котором расположен репозиторий.

```text
example: repo1-sftp-host=sftprepo.domain
```

### Параметр отпечатка сервера репозитория SFTP (`--repo-sftp-host-fingerprint`) {#sftp-repository-host-fingerprint-option---repo-sftp-host-fingerprint}

Отпечаток сервера репозитория SFTP.

Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с `repo-sftp-host-key-hash-type`. Отпечаток можно получить командой `awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b`. Ключи сервера ssh обычно находятся в каталоге `/etc/ssh`.

```text
example: repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
```

### Параметр типа проверки ключа сервера SFTP (`--repo-sftp-host-key-check-type`) {#sftp-host-key-check-type-option---repo-sftp-host-key-check-type}

Тип проверки ключа сервера SFTP.

Поддерживаются следующие типы проверки ключа сервера SFTP:

- `strict` - pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.
- `accept-new` - pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.
- `fingerprint` - pgBackRest сравнивает ключ сервера с отпечатком, заданным параметром `repo-sftp-host-fingerprint`.
- `none` - Ключ сервера не проверяется.

```text
default: strict
example: repo1-sftp-host-key-check-type=accept-new
```

### Параметр типа хеша ключа сервера репозитория SFTP (`--repo-sftp-host-key-hash-type`) {#sftp-repository-host-key-hash-type-option---repo-sftp-host-key-hash-type}

Тип хеша ключа сервера репозитория SFTP.

Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии `libssh2` поддерживают `sha256` в дополнение к md5 и sha1.

```text
example: repo1-sftp-host-key-hash-type=sha256
```

### Параметр порта сервера репозитория SFTP (`--repo-sftp-host-port`) {#sftp-repository-host-port-option---repo-sftp-host-port}

Порт сервера репозитория SFTP.

Порт сервера репозитория SFTP.

```text
default: 22
allowed: [1, 65535]
example: repo1-sftp-host-port=22
```

### Параметр пользователя сервера репозитория SFTP (`--repo-sftp-host-user`) {#sftp-repository-host-user-option---repo-sftp-host-user}

Пользователь сервера репозитория SFTP.

Пользователь на сервере, используемом для хранения репозитория.

```text
example: repo1-sftp-host-user=pg-backup
```

### Параметр файла известных серверов SFTP (`--repo-sftp-known-host`) {#sftp-known-hosts-file-option---repo-sftp-known-host}

Файл известных серверов SFTP.

Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет `~/.ssh/known_hosts`, `~/.ssh/known_hosts2`, `/etc/ssh/ssh_known_hosts` и `/etc/ssh/ssh_known_hosts2`. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр `repo-sftp-known-host` можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, `repo-sftp-host-fingerprint` не должен быть задан. См. также параметр `repo-sftp-host-check-type`.

```text
example: repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
```

### Параметр файла закрытого ключа репозитория SFTP (`--repo-sftp-private-key-file`) {#sftp-repository-private-key-file-option---repo-sftp-private-key-file}

Файл закрытого ключа SFTP.

Файл закрытого ключа SFTP для аутентификации.

```text
example: repo1-sftp-private-key-file=~/.ssh/id_ed25519
```

### Параметр парольной фразы закрытого ключа репозитория SFTP (`--repo-sftp-private-key-passphrase`) {#sftp-repository-private-key-passphrase-option---repo-sftp-private-key-passphrase}

Парольная фраза закрытого ключа SFTP.

Парольная фраза для доступа к закрытому ключу. Её можно задать при создании пары открытого и закрытого ключей SSH.

```text
example: repo1-sftp-private-key-passphrase=BeSureToGenerateAndUseASecurePassphrase
```

### Параметр файла открытого ключа репозитория SFTP (`--repo-sftp-public-key-file`) {#sftp-repository-public-key-file-option---repo-sftp-public-key-file}

Файл открытого ключа SFTP.

Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.

```text
example: repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
```

### Параметр файла CA хранилища репозитория (`--repo-storage-ca-file`) {#repository-storage-ca-file-option---repo-storage-ca-file}

Файл CA хранилища репозитория.

Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.

```text
example: repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
```

Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file

### Параметр каталога CA для TLS хранилища репозитория (`--repo-storage-ca-path`) {#repository-storage-tls-ca-path-option---repo-storage-ca-path}

Каталог CA хранилища репозитория.

Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.

```text
example: repo1-storage-ca-path=/etc/pki/tls/certs
```

Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path

### Параметр сервера хранилища репозитория (`--repo-storage-host`) {#repository-storage-host-option---repo-storage-host}

Сервер хранилища репозитория.

Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.

```text
example: repo1-storage-host=127.0.0.1
```

Устаревшие имена: repo-azure-host, repo-s3-host

### Параметр порта хранилища репозитория (`--repo-storage-port`) {#repository-storage-port-option---repo-storage-port}

Порт хранилища репозитория.

Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.

```text
default: 443
allowed: [1, 65535]
example: repo1-storage-port=9000
```

Устаревшие имена: repo-azure-port, repo-s3-port

### Параметр тегов хранилища репозитория (`--repo-storage-tag`) {#repository-storage-tag-option---repo-storage-tag}

Теги хранилища репозитория.

Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.

В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска `stanza-create`, чтобы теги были одинаковыми во всём репозитории.

```text
example: repo1-storage-tag=key1=value1
```

### Параметр размера части загрузки в хранилище репозитория (`--repo-storage-upload-chunk-size`) {#repository-storage-upload-chunk-size-option---repo-storage-upload-chunk-size}

Размер части загрузки в хранилище репозитория.

Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.

Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения `process-max` увеличивают общий расход памяти.

Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.

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

```text
default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: repo1-storage-upload-chunk-size=16MiB
```

### Параметр проверки сертификата хранилища репозитория (`--repo-storage-verify-tls`) {#repository-storage-certificate-verify-option---repo-storage-verify-tls}

Проверка сертификата хранилища репозитория.

Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.

```text
default: y
example: repo1-storage-verify-tls=n
```

Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

### Параметр символических ссылок в репозитории (`--repo-symlink`) {#repository-symlink-option---repo-symlink}

Создание символических ссылок внутри репозитория.

Включает создание символических ссылок `latest` и ссылок табличных пространств. Эти ссылки наиболее полезны при использовании снимков для восстановления непосредственно в репозитории, что встречается редко.

Хотя подавляющему большинству пользователей эта возможность, вероятно, не нужна, она остаётся включённой по умолчанию ради совместимости. Однако для Posix-подобных хранилищ, не поддерживающих символические ссылки, может быть полезно отключить их.

```text
default: y
example: repo1-symlink=n
```

### Параметр целевого времени репозитория (`--repo-target-time`) {#target-time-for-repository-option---repo-target-time}

Целевое время репозитория.

Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.

S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.

Если указан параметр `repo-target-time`, необходимо также указать `repo`. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.

Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.

```text
example: repo-target-time=2024-08-08 12:12:12+00
```

### Параметр типа репозитория (`--repo-type`) {#repository-type-option---repo-type}

Тип хранилища репозитория.

Поддерживаются следующие типы репозиториев:

- `azure` - Azure Blob Storage Service
- `cifs` - Аналогичен `posix`, но отключает ссылки и fsync каталогов
- `gcs` - Google Cloud Storage
- `posix` - Файловые системы, совместимые с Posix
- `s3` - AWS Simple Storage Service
- `sftp` - Secure File Transfer Protocol

При использовании смонтированной NFS в качестве репозитория `posix` к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: [Создание кластера баз данных — файловые системы](https://www.postgresql.org/docs/current/creating-cluster.html#CREATING-CLUSTER-FILESYSTEM).

```text
default: posix
example: repo1-type=cifs
```

--------

## Параметры восстановления {#restore-options}

Секция `restore` определяет параметры восстановления резервных копий.

### Параметр режима архивирования (`--archive-mode`) {#archive-mode-option---archive-mode}

Сохранение или отключение архивирования на восстановленном кластере.

Позволяет сохранить или отключить архивирование на восстановленном кластере. Это полезно, когда для выполнения определённой работы кластер необходимо повысить до первичного, но использовать его как новый первичный сервер не планируется. В таком случае отправлять WAL этого кластера в репозиторий нежелательно.

Поддерживаются следующие режимы:

- `off` - Отключает архивирование, задавая `archive_mode=off`.
- `preserve` - Сохраняет текущее значение `archive_mode`.

**ПРИМЕЧАНИЕ**: этот параметр недоступен в PostgreSQL < 12.

```text
default: preserve
example: archive-mode=off
```

### Параметр исключения баз данных (`--db-exclude`) {#exclude-database-option---db-exclude}

Восстановление с исключением указанных баз данных.

Исключённые базы данных восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления эти базы будут недоступны, но их можно удалить командой `drop database`. Параметр `--db-exclude` можно передать несколько раз, чтобы исключить несколько баз данных.

В сочетании с параметром `--db-include` параметр `--db-exclude` применяется только к стандартным системным базам данных (`template0`, `template1` и `postgres`).

```text
example: db-exclude=db_main
```

### Параметр включения баз данных (`--db-include`) {#include-database-option---db-include}

Восстановление только указанных баз данных.

Эта возможность позволяет восстановить только выбранные базы данных. Базы, не включённые явно, восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления базы, которые не были включены, будут недоступны, но их можно удалить командой `drop database`.

ПРИМЕЧАНИЕ:

Встроенные базы данных (`template0`, `template1` и `postgres`) всегда восстанавливаются, если они не исключены явно.

Параметр `--db-include` можно передать несколько раз, чтобы включить несколько баз данных.

Дополнительные сведения и ограничения приведены в разделе [Восстановление выбранных баз данных](/ru/docs/pgbackrest/user-guide/#restore-selected-databases).

```text
example: db-include=db_main
```

### Параметр восстановления всех ссылок (`--link-all`) {#link-all-option---link-all}

Восстановление всех символических ссылок.

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

```text
default: n
example: link-all=y
```

### Параметр переназначения ссылок (`--link-map`) {#link-map-option---link-map}

Изменение цели символической ссылки.

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

```text
example: link-map=pg_xlog=/data/xlog
```

### Параметр настройки восстановления (`--recovery-option`) {#recovery-option---recovery-option}

Установка параметра в `postgresql.auto.conf` или `recovery.conf`.

Сведения о параметрах `postgresql.auto.conf` и `recovery.conf` приведены в разделе [Конфигурация сервера](https://www.postgresql.org/docs/current/runtime-config.html) (обязательно выберите свою версию PostgreSQL). Этот параметр можно указывать несколько раз.

Для PostgreSQL >= 12 параметры записываются в `postgresql.auto.conf`. Для всех остальных версий — в `recovery.conf`.

ПРИМЕЧАНИЕ:

Параметр `restore_command` создаётся автоматически, но его можно переопределить этим параметром. Собственный `restore_command` следует задавать осторожно, поскольку pgBackRest рассчитан на автоматическое управление им. Параметры цели восстановления (recovery_target_name, recovery_target_time и т. п.) pgBackRest формирует автоматически, и их не следует задавать таким способом.

Поскольку после записи файла `postgresql.auto.conf` или `recovery.conf` pgBackRest не запускает PostgreSQL, перед ручным перезапуском всегда можно проверить или отредактировать `postgresql.auto.conf` или `recovery.conf`.

```text
example: recovery-option=primary_conninfo=db.mydomain.com
```

### Параметр переназначения табличного пространства (`--tablespace-map`) {#tablespace-map-option---tablespace-map}

Восстановление табличного пространства в указанный каталог.

Перемещает табличное пространство в новое расположение при восстановлении. Это полезно, когда расположения табличных пространств на реплике отличаются или после обновления системы изменились точки монтирования.

Расположения табличных пространств не хранятся в pg_tablespace, поэтому их можно свободно перемещать. Однако переносить табличное пространство в `data_directory` не рекомендуется: это может вызвать проблемы. Дополнительные сведения о перемещении табличных пространств приведены на http://www.databasesoup.com/2013/11/moving-tablespaces.html.

```text
example: tablespace-map=ts_01=/db/ts_01
```

### Параметр переназначения всех табличных пространств (`--tablespace-map-all`) {#map-all-tablespaces-option---tablespace-map-all}

Восстановление всех табличных пространств в указанный каталог.

По умолчанию табличные пространства восстанавливаются в исходные расположения. Для каждого пространства это можно изменить параметром `tablespace-map`, но иногда удобнее сразу переназначить все пространства в новый каталог. Это особенно полезно в системах разработки или предварительного тестирования, где организация хранилища может отличаться от исходной системы, в которой была создана резервная копия.

Указанный путь будет родительским каталогом, в котором создаются все табличные пространства из резервной копии.

ОСТОРОЖНО:

Табличные пространства, созданные после начала резервного копирования, не переназначаются. Если требуется переназначение, после создания табличного пространства следует сделать новую резервную копию.

```text
example: tablespace-map-all=/data/tablespace
```

--------

## Параметры сервера {#server-options}

Секция `server` определяет параметры настройки TLS-сервера.

### Параметр адреса TLS-сервера (`--tls-server-address`) {#tls-server-address-option---tls-server-address}

Адрес TLS-сервера.

IP-адрес, на котором сервер будет слушать запросы клиентов.

```text
default: localhost
example: tls-server-address=*
```

### Параметр авторизованных клиентов TLS-сервера (`--tls-server-auth`) {#tls-server-authorized-clients-option---tls-server-auth}

Авторизованные клиенты TLS-сервера.

Сервер авторизует клиентов, проверяя их сертификаты и сверяя CN (общее имя) сертификата со списком, заданным на сервере параметром `tls-server-auth`.

Клиентский CN можно авторизовать для любого количества stanza, передав в параметре `tls-server-auth` список через запятую, либо для всех stanza, указав `tls-server-auth=client-cn=*`. Для клиентского CN нельзя указывать подстановочные символы.

```text
example: tls-server-auth=client-cn=stanza1,stanza2
```

### Параметр центров сертификации TLS-сервера (`--tls-server-ca-file`) {#tls-server-certificate-authorities-option---tls-server-ca-file}

Центры сертификации TLS-сервера.

Проверяет, что сертификаты клиентов подписаны доверенным центром сертификации.

```text
example: tls-server-ca-file=/path/to/server.ca
```

### Параметр сертификата TLS-сервера (`--tls-server-cert-file`) {#tls-server-certificate-option---tls-server-cert-file}

Файл сертификата TLS-сервера.

Отправляется клиенту для подтверждения личности сервера.

```text
example: tls-server-cert-file=/path/to/server.crt
```

### Параметр ключа TLS-сервера (`--tls-server-key-file`) {#tls-server-key-option---tls-server-key-file}

Файл ключа TLS-сервера.

Подтверждает, что сертификат сервера отправлен его владельцем.

```text
example: tls-server-key-file=/path/to/server.key
```

### Параметр порта TLS-сервера (`--tls-server-port`) {#tls-server-port-option---tls-server-port}

Порт сервера TLS.

Порт, на котором сервер будет слушать запросы клиентов.

```text
default: 8432
allowed: [1, 65535]
example: tls-server-port=8000
```

--------

## Параметры stanza {#stanza-options}

Stanza определяет конфигурацию резервного копирования конкретного кластера баз данных PostgreSQL. В секции stanza должен быть задан путь к кластеру, а для удалённого кластера — также сервер и пользователь. Кроме того, любые глобальные секции конфигурации можно переопределить, задав настройки для конкретной stanza.

**Индексация**: все параметры `pg-` имеют индексы, что позволяет настраивать несколько серверов PostgreSQL. Например, один первичный сервер настраивается параметрами `pg1-path`, `pg1-port` и т. п. Если настроен резервный сервер, укажите на сервере репозитория его параметры `pg-` с индексом `pg2-` (например, pg2-host, pg2-path и т. п.).

### Параметр базы данных PostgreSQL (`--pg-database`) {#postgresql-database-option---pg-database}

База данных PostgreSQL.

Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.

По историческим причинам значение переменной окружения `PGDATABASE` игнорируется.

```text
default: postgres
example: pg1-database=backupdb
```

### Параметр сервера PostgreSQL (`--pg-host`) {#postgresql-host-option---pg-host}

Сервер PostgreSQL для удалённой работы.

Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.

```text
example: pg1-host=db.domain.com
```

Устаревшее имя: db-host

### Параметр файла центра сертификации сервера PostgreSQL (`--pg-host-ca-file`) {#postgresql-host-certificate-authority-file-option---pg-host-ca-file}

Файл центра сертификации сервера PostgreSQL.

Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.

```text
example: pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
```

### Параметр каталога центра сертификации сервера PostgreSQL (`--pg-host-ca-path`) {#postgresql-host-certificate-authority-path-option---pg-host-ca-path}

Каталог центра сертификации сервера PostgreSQL.

Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.

```text
example: pg1-host-ca-path=/etc/pki/tls/certs
```

### Параметр файла сертификата сервера PostgreSQL (`--pg-host-cert-file`) {#postgresql-host-certificate-file-option---pg-host-cert-file}

Файл сертификата для сервера PostgreSQL.

Отправляется серверу PostgreSQL для подтверждения личности клиента.

```text
example: pg1-host-cert-file=/path/to/client.crt
```

### Параметр команды на сервере PostgreSQL (`--pg-host-cmd`) {#postgresql-host-command-option---pg-host-cmd}

Команда pgBackRest на сервере PostgreSQL.

Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.

```text
default: [path of executed pgbackrest binary]
example: pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
```

Устаревшее имя: db-cmd

### Параметр файла конфигурации сервера PostgreSQL (`--pg-host-config`) {#postgresql-host-configuration-option---pg-host-config}

Файл конфигурации pgBackRest на сервере базы данных.

Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.

```text
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: pg1-host-config=/conf/pgbackrest/pgbackrest.conf
```

Устаревшее имя: db-config

### Параметр каталога включаемых конфигураций сервера PostgreSQL (`--pg-host-config-include-path`) {#postgresql-host-configuration-include-path-option---pg-host-config-include-path}

Каталог включаемых конфигураций pgBackRest на сервере базы данных.

Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.

```text
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: pg1-host-config-include-path=/conf/pgbackrest/conf.d
```

### Параметр каталога конфигурации сервера PostgreSQL (`--pg-host-config-path`) {#postgresql-host-configuration-path-option---pg-host-config-path}

Каталог конфигурации pgBackRest на сервере базы данных.

Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.

```text
default: CFGOPTDEF_CONFIG_PATH
example: pg1-host-config-path=/conf/pgbackrest
```

### Параметр файла ключа для сервера PostgreSQL (`--pg-host-key-file`) {#postgresql-host-key-file-option---pg-host-key-file}

Файл ключа для сервера PostgreSQL.

Подтверждает, что сертификат клиента отправлен его владельцем.

```text
example: pg1-host-key-file=/path/to/client.key
```

### Параметр порта сервера PostgreSQL (`--pg-host-port`) {#postgresql-host-port-option---pg-host-port}

Порт сервера PostgreSQL при заданном `pg-host`.

Позволяет указать нестандартный порт для протокола сервера PostgreSQL.

ПРИМЕЧАНИЕ:

При `pg-host-type=ssh` для `pg-host-port` нет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной в `cmd-ssh`.

```text
default (depending on pg-host-type):
    tls - 8432

allowed: [0, 65535]
example: pg1-host-port=25
```

Устаревшее имя: db-ssh-port

### Параметр типа протокола сервера PostgreSQL (`--pg-host-type`) {#postgresql-host-protocol-type-option---pg-host-type}

Тип протокола сервера PostgreSQL.

Поддерживаются следующие типы протоколов:

- `ssh` - Secure Shell.
- `tls` - TLS-сервер pgBackRest.

```text
default: ssh
example: pg1-host-type=tls
```

### Параметр пользователя сервера PostgreSQL (`--pg-host-user`) {#postgresql-host-user-option---pg-host-user}

Пользователь для входа на сервер PostgreSQL при заданном `pg-host`.

Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь `postgres`, выбранный по умолчанию.

```text
default: postgres
example: pg1-host-user=db_owner
```

Устаревшее имя: db-user

### Параметр пути PostgreSQL (`--pg-path`) {#postgresql-path-option---pg-path}

Каталог данных PostgreSQL.

Следует указать значение `data_directory`, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.

При каждом резервном копировании работающего кластера параметр `pg-path` сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.

```text
example: pg1-path=/data/db
```

Устаревшее имя: db-path

### Параметр порта PostgreSQL (`--pg-port`) {#postgresql-port-option---pg-port}

Порт PostgreSQL.

Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.

```text
default: 5432
allowed: [0, 65535]
example: pg1-port=6543
```

Устаревшее имя: db-port

### Параметр каталога сокета PostgreSQL (`--pg-socket-path`) {#postgresql-socket-path-option---pg-socket-path}

Каталог Unix-сокета PostgreSQL.

Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой `unix_socket_directories` в `postgresql.conf`.

```text
example: pg1-socket-path=/var/run/postgresql
```

Устаревшее имя: db-socket-path

### Параметр пользователя базы данных PostgreSQL (`--pg-user`) {#postgresql-database-user-option---pg-user}

Пользователь базы данных PostgreSQL.

Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или `PGUSER`.

```text
example: pg1-user=backupuser
```

---

Обратные ссылки:

- [pgBackRest](/ru/docs/pgbackrest/)
- [Команды](/ru/docs/pgbackrest/command/)
- [archive-push](/ru/docs/pgbackrest/command/archive-push/)
- [Руководство (Deb)](/ru/docs/pgbackrest/user-guide/)
- [Руководство (EL)](/ru/docs/pgbackrest/user-guide-rhel/)
