Como fazer instantâneos automáticos de hora em hora/diariamente/semanalmente com Btrfs

Como fazer instantâneos automáticos de hora em hora/diariamente/semanalmente com Btrfs

Lembro-me de trabalhar em uma empresa com um servidor NetApp em 2003, e tínhamos um diretório de snapshots em nossos diretórios pessoais, com vários snapshots aparecendo nele. Acho que houve instantâneos do último minuto, hora, dia, semana, etc. Quando configurei meu primeiro sistema de arquivos Btrfs, fiquei surpreso por não conseguir encontrar um script para automatizar o fornecimento de uma interface semelhante usando Btrfs.

Não me lembro exatamente como o layout foi configurado, mas poderia imaginar algo assim:

$HOME/some_file
$HOME/.snapshot/minute/2016-04-16_07_33/some_file
                       2016-04-16_07_34/...
                       2016-04-16_07_35
                hour/2016-04-16_05_00
                     2016-04-16_06_00
                     2016-04-16_07_00
                day/2016-04-14
                    2016-04-15
                    2016-04-16
                week/2016-03-27
                     2016-04-03
                     2016-04-10

O que estou procurando é um script que possa ser executado cron, que criará os instantâneos Btrfs necessários e os montará nos locais acima. Deve ser executado uma vez por minuto. Para cada unidade de tempo - minuto/hora/dia/semana - deverá manter algum número configurável N de snapshots, para as últimas N unidades. No exemplo acima, N seria 3. Os instantâneos mais antigos devem ser excluídos automaticamente, a menos que estejam em uso. "Em uso" pode significar, por exemplo, que eu usei cdum deles ou o montei em outro local.

Obviamente, também seria bom ter instantâneos simultâneos /no sistema raiz, ou no /home/some_other_user/, e não apenas no meu $HOME.

informação relacionada