Извлечение дополнительных файлов из резервной копии
Исполнять сценарий необходимо от имени пользователя postgres.
Описание сценария
Извлечение одного или нескольких дополнительных файлов из CWL-архива резервной копии с сохранением в файловую систему по указанному пути.
При извлечении файла сохраняются его исходные права доступа.
Предусловие
- Создана резервная копия с включенными дополнительными файлами (подробнее – в разделе Добавление дополнительных файлов в резервную копию).
- CWL-архив доступен для чтения.
Последовательность выполнения
Инициируйте извлечение дополнительного файла через CLI copywala командой copywala cwl extra-files extract (ознакомьтесь со справкой по команде ниже).
Справка по команде copywala cwl extra-files extract
Описание:
Извлекает дополнительные файлы из CWL-архива резервной копии и сохраняет их в файловую систему по указанному пути.
Синтаксис:
copywala cwl extra-files extract <path to cwl archive> --file <original path>=<new path> [flags]
Обязательные параметры:
| Флаг / Параметр | Описание |
|---|---|
<path to cwl archive> | Путь к CWL-архиву резервной копии |
-f|--file <original path>=<new path> | Пара «исходный путь = новый путь», задающая соответствие файла из архива пути в целевой директории. Для извлечения нескольких файлов укажите несколько флагов -f|--file |
Если в команде используется URI, указывающий подключение к DDBoost через S2, его необходимо обязательно заключать в двойные кавычки.
Это требование связано с тем, что URI содержит символ &, который интерпретируется Bash как оператор фонового запуска команды.
Ниже приведен пример для команды copywala cwl info:
copywala cwl info "s2://<s2-host>/<ddboost-storage-unit>/path/in/ddboost/storage/unit?driver=ddboost&data_domain_host=<ddboost-host>"
Опциональные параметры:
[flags] – доступны следующие флаги:
| Флаг | Описание |
|---|---|
-h|--help | Показать справку по команде |
-c|--config <path to copywala config> | Использовать конфигурационный файл, отличный от файла по умолчанию: /etc/pbr/copywala.yaml |
--force-replace | Принудительная замена существующего файла при извлечении. По умолчанию, если целевой файл уже существует, операция завершается с ошибкой |
Для одновременного извлечения нескольких файлов укажите несколько флагов --file:
:caption: Пример
$ copywala cwl extra-files extract /home/postgres/backups/test_06_07_019f3625-4480-77d8-ad10-f2980111eeb8/backups/2026-07-07-12-46_019f3bf9-3fa4-7d2a-864c-4228eed95a43_full_000000010000000000000041.cwl \
--file /etc/pbr/test_file_1.conf=/home/postgres/test_file_1_extracted.conf \
--file /etc/pbr/test_file_2.conf=/home/postgres/test_file_2_extracted.conf
2026-07-07 12:59:30.383 [807704] INF file extracted file=/etc/pbr/test_file_1.conf new_path=/home/postgres/test_file_1_extracted.conf
2026-07-07 12:59:30.387 [807704] INF file extracted file=/etc/pbr/test_file_2.conf new_path=/home/postgres/test_file_2_extracted.conf
По умолчанию, если целевой файл уже существует, операция завершится с ошибкой:
:caption: Пример вывода
2026-07-07 12:59:07.877 [807622] ERR extract files err="file already exists: /home/postgres/test_file_1_extracted.conf"
Для принудительной замены существующего файла используйте флаг --force-replace.
Результат
После успешного выполнения команды будет выведено сообщение уровня INF с указанием исходного пути файла (файлов) и новых путей сохранения:
:caption: Пример
$ copywala cwl extra-files extract /home/postgres/backups/test_06_07_019f3625-4480-77d8-ad10-f2980111eeb8/backups/2026-07-07-12-46_019f3bf9-3fa4-7d2a-864c-4228eed95a43_full_000000010000000000000041.cwl --file /etc/pbr/test_file_1.conf=/home/postgres/test_file_1_extracted.conf
2026-07-07 12:52:29.870 [806875] INF file extracted file=/etc/pbr/test_file_1.conf new_path=/home/postgres/test_file_1_extracted.conf
Извлеченные файлы будут доступны по указанным целевым путям с правами доступа, соответствующими правам исходных файлов в архиве.
Исключительные сценарии
Будет выведено соответствующее сообщение для случаев:
-
Целевой файл уже существует:
:caption: Пример вывода
file already exists: /home/postgres/test_file_1_extracted.conf -
Указанный файл отсутствует в архиве:
:caption: Пример вывода
failed to get extra file: /etc/pbr/test_file_3.conf: extra file not found: /etc/pbr/test_file_3.conf -
Отсутствуют права на запись в целевую директорию.
-
Отсутствуют права на чтение CWL-архива.
-
Указан неверный путь к CWL-архиву.
-
CWL-архив поврежден.