O que você descreve já está em uso, com a opção rsync
e sua --link-dest=
, por meio de dezenas de programas de wrapper, como dirvish , entre outros.
Eu sei sobre backups completos, backups incrementais e backups decrementais. No entanto, fiquei imaginando por que ninguém (Windows Backup, TrueImage, Paragon) parece ter implementado o seguinte algoritmo de backup.
Ele precisa de um meio de backup que suporte links, por exemplo, NTFS. Idealmente, a mídia de backup é do mesmo formato para suportar todos os recursos, como fluxos de dados alternativos (ADS).
Há alguma coisa que eu sinto falta neste algoritmo que não funcionaria?
Embora tenha percebido algum problema, vejo as seguintes vantagens:
O que você descreve já está em uso, com a opção rsync
e sua --link-dest=
, por meio de dezenas de programas de wrapper, como dirvish , entre outros.
Parece um plano viável. Isso diminuiria o tempo gasto para visualizar e usar os backups. Se os backups são usados com freqüência e é preciso ver os instantâneos completos, isso seria muito útil.
Eu mudaria o texto "movido de L para C" para simplesmente dizer "linkado de L para C".
Uma consideração - excluir um arquivo com um grande número de links (em referência ao seu último ponto) significa localizar todos esses links e removê-los. Então, recuperar o espaço seletivamente dessa maneira seria mais desafiador, mas fácil o suficiente para fazer com o comando find.
O que você está descrevendo é essencialmente um esquema de backup incremental.
Como Dan D. aponta , ele é realmente usado por várias ferramentas, especialmente em plataformas semelhantes a Unix, nas quais os hardlinks são manipulado nativamente por muitos dos programas que se importam.
No entanto, muitos programas do Windows não lidam muito bem com hardlinks. Nos dias de FAT, os hardlinks na verdade teriam sido considerados um erro , já que dois nomes no sistema de arquivos não tinham permissão para apontar para os mesmos blocos de dados.
O que você descreve é um esquema de backup incremental, porque qualquer backup é construído sobre todos os backups anteriores. A única diferença real é como esses backups anteriores são referenciados e o fato de que é mais fácil excluir um backup anterior porque os dados só serão realmente excluídos quando a contagem de referência para o arquivo em questão chegar a zero, o que acontecerá quando não houver mais sendo referenciado de qualquer backup. Claro que a desvantagem disso é que é mais difícil prever exatamente quanto espaço será liberado, excluindo um backup anterior; no caso extremo, exceto pelo espaço usado pelos metadados do sistema de arquivos e recuperado, ele pode, na verdade, ser zero. (Sem alterações entre esse backup e um backup adjacente).
No caso de backups incrementais "normais", você precisa fazer as restaurações manualmente. No caso do que você está descrevendo, a referência é implícita. No entanto, se você excluir tudo o que não foi realmente copiado durante (tem uma contagem de referência de exatamente um em) o backup mais recente, o backup ainda seria tão incompleto como seria se você tivesse feito vários backups incrementais e tentei restaurar apenas o mais recente.
Eu acho que é basicamente o que você chama de cópia Deloreana. Há, por exemplo, o Link Shell Extension para Windows, que implementa esse comportamento. Eles têm uma explicação muito boa em sua documentação: