Gostaria de poder dizer, de forma programática, se o CrashPlan fez backup de um arquivo específico, incluindo as atualizações atuais desse arquivo. Ou seja, que o conteúdo atual de um arquivo seja armazenado em backup.
É relativamente fácil dizer quando o CrashPlan fez o backup de um arquivo pela última vez: seu nome de arquivo aparece em /usr/local/crashplan/log/backup_files.log.0, e com alguma precisão, pude comparar o tempo de backup com a hora da última modificação do arquivo, mas esse método parece ser um pouco duvidoso.
Alguns métodos que eu pude pensar, mas não sei como:
-
Compare o arquivo atual com os metadados do CrashPlan sobre esse arquivo. Isso precisa de conhecimento sobre o formato dos arquivos "cache" do CrashPlan, bem como sobre o sistema de hashing usado. Isso pode ser feito por meio da CLI, mas a CLI é apenas um portal para a GUI e eu preciso de algo que possa ser roteirizado.
-
Restaure o arquivo para um diretório temporário e compare-o. Infelizmente, não há CLI para fazer restaurações; a GUI é a única maneira.
Vou descrever o que estou tentando alcançar. Seria bom saber como fazer o acima, mesmo que haja métodos alternativos para o seguinte:
Estou usando o CrashPlan para backups contínuos em meu banco de dados PostgreSQL, usando arquivos WAL. Na configuração atual, o comando archive copia os arquivos para um diretório de archive, cujo backup é feito pelo CrashPlan. De vez em quando eu confirmo manualmente (ou apenas confio) um backup de um grupo de WALs, e removo-os do diretório de arquivamento e, ocasionalmente, faço uma restauração através da GUI para garantir que posso recuperar os WALs atuais e "excluídos". O diretório xlog também é submetido a backup, portanto, tenho uma boa chance de fazer uma restauração quase completa, mesmo que um xlog específico ainda não tenha sido arquivado pelo PostgreSQL.
Gostaria de poder automatizar esse processo, o que exige a confirmação do status do backup e a recente experiência ou a automação de uma restauração para fins de comparação.
(Como um bônus, se o método for confiável, eu poderia transformar o "archive_command" de "copy to archive directory" em "confirme que o CrashPlan fez backup da versão atual" e acabar com o diretório de archive completamente).
(E, sim, estou fazendo o pg_dumpall regular, além do acima).