Cara, demora muito tempo para escanear 5.000.000 inodes todos os dias para encontrar arquivos que mudaram!
E se houvesse uma maneira de fazer backup somente das alterações desde o último backup?
Bem, você pode… com instantâneos !
O maior obstáculo para os instantâneos é mudar para um sistema de arquivos que os suporte.
No Linux, dois sistemas de arquivos de snapshot conhecidos são:
Ambos são sistemas de arquivos copy-on-write. O que isso praticamente significa para você é que eles acompanham as alterações desde o último instantâneo, de modo que, quando você envia o instantâneo mais recente para o servidor de backup, apenas as alterações são enviadas, mas ainda assim você tem uma cópia completa de todos os backups diários que você decidir manter.Isso significa que, como bônus, você tem o potencial de manter mais de um dia de backups por não muito espaço extra (apenas o espaço em disco usado pelas alterações todos os dias) e pode excluir os backups de maneira flexível, mantendo semanalmente backups, mensais ou anuais, como você deseja.
Backups Incrementais do Btrfs
Este é um exemplo de comandos que você pode executar para fazer backups incrementais e enviá-los para o servidor de backup:
# Make a snapshot
btrfs subvolume snapshot -r /app/data /backup/app-data-$(date "+%Y%m%dT%H%M%S%Z")
# Ensure the snapshot is saved
sync
# Find your latest snapshot, referred to as '/backup/app-data-THIS_BACKUP_TIMESTAMP' below
ls -lhtr /backup/
# Send the snapshot since the previous snapshot to the backup server
btrfs send -p /backup/app-data-LAST_BACKUP_TIMESTAMP /backup/app-data-THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "btrfs receive /backup/app-data"
Nota: Exclua -p /backup/app-data-LAST_BACKUP_TIMESTAMP
do último comando se este for o primeiro backup.
Backups Incrementais do ZFS
Este é um exemplo de comandos que você pode executar para fazer backups incrementais e enviá-los para o servidor de backup:
# Create a snapshot of the "data" dataset in your "app-pool" zpool
zfs snapshot app-pool/data@$(date "+%Y%m%dT%H%M%S%Z")
# Find your latest snapshot, referred to as 'app-pool/data@THIS_BACKUP_TIMESTAMP' below
zfs list -rt snapshot app-pool/data
# Send the snapshot since the previous snapshot to the backup server
zfs send -i app-pool/data@LAST_BACKUP_TIMESTAMP app-pool/data@THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "zfs receive backup-pool/app-data"
Nota: Exclua -i app-pool/data@LAST_BACKUP_TIMESTAMP
do último comando se este for o primeiro backup.