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

Валидация контрольных сумм файлов и метаданных CWL-архива

примечание

Исполнять сценарий необходимо от имени пользователя postgres.

Описание сценария

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

Алгоритм расчета контрольных сумм файлов и метаданных архива настраивается путем добавления или изменения поля archive_settings.checksum_algorithm в конфигурационном файле copywala.yaml:

  • Значение по умолчанию: CRC32.
  • Возможные значения: CRC32, SHA256, DISABLED.

Чтобы отключить контрольные суммы, укажите явно: DISABLED.

Контролируется следующее:

  • Целостность метаданных и файлов архива — если ранее был выполнен расчет контрольных сумм при создании резервной копии.
  • Целостность отдельных страниц — если параметр restore_policy.verify_page_checksums установлен в значение true.

Предусловие

Включена опция проверки целостности метаданных (поле archive_settings.checksum_algorithm).

Последовательность выполнения

Чтобы удостовериться в отсутствии повреждений сформированного архива резервной копии, запустите процедуру проверки контрольных сумм CWL-архива через CLI copywala командой copywala verify <путь к файлу>.

Внимание!

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

Результат

В случае успешного результата будет выведено:

$ copywala verify backups/db9_01999b4f-cc99-755e-83e7-e08a12d46c85/backups/2025-09-30-19-03_01999b5d-a048-79a1-a72a-291a4d6de450_full_00000001000000000000005B.cwl
2025-10-02 17:37:42.123 INF copywala 1.2.0 (3412fdd) compiled at 2025-09-30_14:48:02
2025-10-02 17:37:42.456 INF reading will be performed sequentially package=cwl
2025-10-02 17:37:42.789 INF finished reading parts package=cwl
2025-10-02 17:37:42.834 INF Verification succeeded without errors

Исключительные сценарии

  • Файл с архивом не найден:

        $ copywala verify backups/db9_01999b4f-cc99-755e-83e7-e08a12d46c85/backups/not-exists.cwl
    2025-10-02 17:40:49.567 INF copywala 1.2.0 (3412fdd) compiled at 2025-09-30_14:48:02
    2025-10-02 17:40:49.890 ERR failed to init verify command components err="open /home/postgres/backups/db9_01999b4f-cc99-755e-83e7-e08a12d46c85/backups/not-exists.cwl: no such file or directory"
  • Неверный формат файла:

        $ copywala verify backups/db9_01999b4f-cc99-755e-83e7-e08a12d46c85/backups/bad-archive.cwl
    2025-10-02 17:43:09.123 INF copywala 1.2.0 (3412fdd) compiled at 2025-09-30_14:48:02
    2025-10-02 17:43:09.456 ERR failed to init verify command components err="unknown cwl magic word"
  • Если при создании резервной копии отключено вычисление контрольных сумм метаданных архива, то при последующей проверке целостности будет выведено:

    WRN archive metadata and file checksums were not enabled during backup, thus won't be verified package=cwl
  • Поврежден заголовок архива:

        $ copywala verify broken.cwl
    2025-10-02 18:13:56.189 INF copywala 1.2.0 (3412fdd) compiled at 2025-09-30_14:48:02
    2025-10-02 18:13:56.234 ERR header checksum verification failure err="checksum verification failure: expected [196 78 53 202], actual [237 163 243 79]"
    2025-10-02 18:13:56.567 ERR failed to get cwl v2 reader err="checksum verification failure: expected [196 78 53 202], actual [237 163 243 79]"
    2025-10-02 18:13:56.890 ERR failed to init verify command components err="checksum verification failure: expected [196 78 53 202], actual [237 163 243 79]"