Могу ли я сказать, что аварийный план выполнил резервное копирование определенного файла в определенном состоянии?

606
Chris Cogdon

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

Относительно легко определить, когда CrashPlan в последний раз сделал резервную копию файла: его имя файла появляется в /usr/local/crashplan/log/backup_files.log.0, и с некоторой точностью я мог бы сравнить время резервного копирования с временем последнего изменения, чтобы файл, но этот метод выглядит несколько сомнительным.

Я мог бы придумать пару методов, но я не знаю, как:

  • Сравните текущий файл с метаданными CrashPlan об этом файле. Для этого нужны знания о формате файлов кэша CrashPlan и используемой системе хеширования. Это может быть достигнуто через CLI, но CLI - это просто портал в GUI, и мне нужно что-то, что может быть написано в сценарии.

  • Восстановите файл во временный каталог и сравните его. К сожалению, нет CLI для восстановления; GUI это единственный способ.

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

Я использую CrashPlan для непрерывного резервного копирования в мою базу данных PostgreSQL, используя архивы WAL. В текущей конфигурации команда archive копирует файлы в каталог архива, который резервируется CrashPlan. Время от времени я вручную подтверждаю (или просто доверяю) группу резервных копий WAL, удаляю их из архивной директории и иногда выполняю восстановление через графический интерфейс, чтобы обеспечить возможность извлечения текущих и «удаленных» WAL. Каталог xlog также является резервным копированием, поэтому у меня есть хорошие шансы сделать почти полное восстановление, даже если конкретный xlog еще не был заархивирован PostgreSQL.

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

(В качестве бонуса, если метод заслуживает доверия, я мог бы превратить «archive_command» из «copy to archive directory» в «подтверждение того, что CrashPlan создал резервную копию текущей версии», и полностью удалить каталог архива).

(И да, я делаю обычные pg_dumpall, в дополнение к вышеупомянутому.)

0

2 ответа на вопрос

0
Julian Knight

This will not be possible I'm afraid. Certainly not with the consumer version, I'm not familiar with the business/enterprise versions.

Part of the problem is that the data is encrypted locally so I don't think you can simply pull anything useful from the cache.

I think that you are looking at the wrong tool for the job. I would recommend researching a more focused backup tool, perhaps one that has specific Postgres agents.

Да, конечно, есть более подходящие решения, но все они включают добавление еще одной службы резервного копирования, которой я надеялся избежать! Chris Cogdon 9 лет назад 0
Справедливо. Хотя мне и нравится CP, у него есть ограничения. Я не нашел ни одного решения, которое могло бы делать все, что я хочу. У каждого есть свои сильные и слабые стороны. Julian Knight 9 лет назад 0
0
bougui

I've written a simple script that do the trick. However it does it by comparing the backup time with the last modification time of the file. It's the only solution I've found. Below is the link to my blog post and the corresponding gist:

http://bougui505.github.io/2016/05/20/get_crashplan_backup_status_using_a_shell_command_line_on_linux.html

https://gist.github.com/bougui505/ba9db84a2fc6f9330f3ccf32a352a98e#file-backup_stat-sh

Похожие вопросы