Parece assim:
A backup program employing the use of SquashFS, Aufs and Rsync
Atualmente, faço backups usando rsync e hardlinks. Eu crio um novo full a cada ano e, em seguida, incrementais todos os dias. Eu gosto do jeito que eu posso navegar em um gerenciador de arquivos comum, e esse acesso é bastante rápido. Eu não gosto da quantidade de tempo e espaço ocupados criando os hardlinks. Eu também gostaria de compressão (mas de certa forma, portanto, a corrupção afeta apenas um único arquivo). Também seria melhor se eu pudesse armazenar isso em sistemas de arquivos que não suportam atributos linux (como armazenamento em nuvem).
Eu fiz algumas pesquisas e testes e aprendi algumas coisas. Em primeiro lugar, descobri que squashfs satisfaz todas as minhas necessidades, exceto incremental. Ele compacta cada bloco individualmente (ainda que tenha comprimido meu diretório home para 70% do tamanho original), de modo que a corrupção afeta apenas uma pequena quantidade de dados. Ele também pode ser armazenado como um arquivo comum e ainda conter atributos do Linux. Também pode ser montado e suporta acesso aleatório. Para resolver a necessidade remanescente de backups incrementais, pesquisei sistemas de arquivos de sobreposição. Eu decidi pelo aufs, pois ele suporta múltiplos branches, e parece simples o suficiente para usar.
A maneira que estou pensando em fazer backups é:
full-${unix_timestamp}.squashfs
full-${unix_timestamp_of_full}-differential-${unix_timestamp}.squashfs
daily-${unix_timestamp_of_monthly}-incremental-${unix_timestamp}.squashfs
rsync -axvh --delete /home /backups/work/
algumas vezes (e com algumas exclusões para cache e lixo) mkdir /backups/temp/overlay
/backups/temp/
/backups/base
com todas as montagens squashfs sendo ro, e a sobreposição sendo rw /backups/base
Isso é possível ou vou me deparar com problemas importantes (como problemas de desempenho) e minha ideia parece boa?
Estou planejando escrever um script para automatizar esse processo se não houver problemas importantes na minha ideia.