Перейти к основному содержимому

Извлечение дополнительных файлов из резервной копии

примечание

Исполнять сценарий необходимо от имени пользователя 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-архив поврежден.