Adotei uma abordagem um pouco diferente e talvez incompatível com a sua. Em vez de salvar o btrfs send
stream com -f
, sempre btrfs receive
reproduz o instantâneo na mídia de backup (também um sistema de arquivos btrfs).
Além disso, todos os instantâneos são indistinguíveis um do outro - não há diferença entre os meses, os horários, os horários, etc. - eles são simplesmente nomeados de acordo com um isodato do formato AAAA-MM-DDTHHMMSS + hhmm. A remoção de instantâneos no host original e na remoção de instantâneos na mídia de backup separadamente não me causou problemas com incrementais, mas ainda é cedo.
O que começou como um githubista se transformou em algo maior, então eu chamei de snazzer - veja link
Eu escrevi o que eu esperava que fosse um script de poda genericamente útil, ou melhor, um script que emite os caminhos dos instantâneos que devem ser candidatos à poda. Consulte o link - veja a sinopse com este exemplo:
find /some/.snapshotz -maxdepth 1 -mindepth 1 -type d | \
snazzer-prune-candidates | xargs btrfs subvolume delete
Infelizmente, isso não funcionará para você, porque depende dos nomes de snapshots com datas de iso. Se você tiver a chance de dar uma olhada em snazzer
, snazzer-receive
ou qualquer outro bit, por favor me dê feedback - não estou pronto para lançar para o mundo (eu apenas adicionei a capacidade hoje de receber instantâneos de um sistema de arquivos local em vez de ssh), mas qualquer feedback seria bem-vindo.
P.S. Se você sentir repulsa pelo fato de eu ter escolhido o POSIX shell e perl para esta primeira versão, é porque estou em um ataque de dependências zero - estarei adicionando implementações de python nos próximos meses: D