
Estou tentando criar algum sistema de backup que me permita transferir a quantidade mínima de dados sempre que um novo backup for feito.
Atualmente, estou fazendo um backup incremental via duplicidade para uma montagem SMB. Estou limitado a cerca de 1 MB/s no momento (wifi/ndiswrapper é uma bobagem, mas ainda assim - não vou obter mais do que 5x de aceleração consertando-o).
Infelizmente, os dados removidos, modificados etc. tornam difícil manter os backups incrementais para sempre. Não consigo nivelá-los facilmente para um backup completo e fazer uma cópia completa de mais de 40 GB está demorando um pouco agora.
Há algumas coisas que gostaria de alcançar com o novo sistema e outras com as quais não me importo muito:
- Eu gostaria de ter alguns pontos de verificação, mas provavelmente não mais do que 2 ou 3
- Não me importo com criptografia, pois o armazenamento está localizado na rede local
- A compactação seria boa, mas acho que posso apenas usar a compactação do sistema de arquivos/dispositivo
- Quero poder me livrar completamente de todos, exceto o backup mais recente, sem me forçar a fazer uma cópia completa novamente
Isso parece ser possível com compressão de dispositivo rsync + loop + instantâneo fs ... mas infelizmente meu dispositivo não suporta instantâneos. Ele só tem a lista padrão de sistemas de arquivos suportados pelo Debian e eu realmente não quero usar o btrfs para backups.
Existem soluções comparáveis? De que outra forma posso abordar isso?
Editar: acho que a parte do instantâneo pode ser feita com instantâneos somente leitura lvm. Isso também daria outra camada de proteção contra aplicativos com mau comportamento.
Responder1
instantâneofaz backups incrementais através do uso de hardlinks e rsync - se o arquivo for o mesmo da última vez que o backup foi executado, então ele apenas faz um hardlink. Então, se você não mudasse nada e executasse o rsnapshot a cada hora durante três horas, você teria três pastas:
hourly.0
hourly.1
hourly.2
Cada um pareceria conter um backup “completo”, mas apenas uma cópia de cada arquivo residiria no disco. Isso significa que, se você excluir hourly.2, hourly.1 e hourly.0 ainda conterão todos os arquivos. Você pode definir a frequência de backup e o número de instantâneos.
Isso atingiria seu primeiro objetivo, no entanto, o sistema de arquivos de destino deve suportar hardlinks para que isso funcione.
Uma alternativa para isso seria usar rsync +LVMno dispositivo de backup e tire instantâneos periodicamente. Os instantâneos LVM são volumes de "cópia na gravação", onde permanecem idênticos ao original, reutilizando os mesmos blocos que o volume do instantâneo, a menos que os blocos sejam alterados, após o que o volume do instantâneo apenas armazena os blocos que são diferentes. Portanto, ele pode ser dimensionado para corresponder à taxa de alteração do volume que está sendo capturado entre backups.
A compactação seria boa, mas se você não quiser usar o btrfs, então sim, seria necessário algum tipo de compactação do sistema de arquivos por meio de um loop ou fusível.