Eu tenho um sistema FreeNAS local e quero usar snapshots do ZFS para backups.
O FreeNAS possui as Tarefas de replicação internas que usam
zfs send snapshot_name
para enviar um instantâneo para um sistema remoto. Mas isso precisa de um sistema com o ZFS do outro lado.
Quero enviar o instantâneo para um arquivo e enviar esse arquivo compactado e criptografado para a máquina remota.
Isso é possível com
zfs send snapshot_name | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl
Todos os dias, faço um instantâneo do pool de armazenamento e mantenho todos os instantâneos por 30 dias.
Com cada instantâneo tirado, canalizo esse instantâneo para um arquivo.
- snapshot_file 1 possui todos os arquivos (digamos 2GB)
- snapshot_file 2 possui apenas as alterações no snapshot_file 1 (digamos 5MB)
- snapshot_file 3 mantém as alterações no snapshot_file 2; e assim por diante.
No dia 31, o snapshot_file 1 está sendo excluído (porque eu só quero as alterações dos últimos 30 dias)
Portanto, o snapshot_file 2 precisa armazenar todos os arquivos (2 GB de snapshot_file 1 + 5 MB são alterados)
Mas com essa abordagem todos os dias (a partir do dia 31), um novo arquivo de 2 GB deve ser criado e enviado para um sistema remoto. Isso é demais.
Qual seria a melhor abordagem para usar os instantâneos canalizados para um arquivo como uma estratégia de backup com um histórico de X dias?
PS: Eu sei que há muitos softwares de backup por aí (rdiff-backup, por exemplo), que eu poderia usar. Mas estou curioso para saber como isso pode ser feito.
zfs recv
do outro lado (em uma piscina,zfs set compression=gzip-9
por exemplo). Armazenar arquivos de instantâneo parece muito ineficiente para mim.