Сделал копирование
регулярной процедурой.
Задача — сохранять данные PostgreSQL независимо от обновлений приложения и замечать, если копии перестали создаваться. Для создания и контроля свежести используются разные таймеры.
Успех определяется не только завершением pg_dump: новый архив должен пройти проверку структуры. Только после этого он участвует в хранении трёх последних успешных копий.
Создание и контроль разделены.
taskflow-backup.timer запускает создание копии ежедневно в 10:00 по расписанию сервера. taskflow-backup-check.timer проверяет свежесть каждый час. Проверка возраста архива не создаёт новую копию.
Готовый архив появляется после проверки.
pg_dump выгружает taskflow-postgres в пользовательском формате PostgreSQL. Сначала создаётся временный файл. Команда pg_restore -l проверяет, что оглавление архива читается. После успешной проверки файл становится готовой копией.
Сохраняются три последних успешных архива.
Очистка выполняется после успешного создания копии. Неудачный новый архив не должен вытеснять рабочие. На момент аудита были зафиксированы три готовых файла; временные файлы после исправления процесса не оставались.
Восстановление из резервной копии работает.
Восстановление PostgreSQL из резервной копии проверено и работает. Проверка оглавления через pg_restore -l остаётся отдельным этапом: она проверяет структуру архива и сама по себе не выполняет восстановление.