Estudo de caso:
Um sistema de backup automático de todos os membros da família via OpenVPN.
Muitos arquivos (especialmente fotos) são comuns entre os membros da família.
Portanto, com um script, substituo arquivos idênticos por links físicos.
Então surge um problema: se um usuário alterar seu arquivo, o arquivo será alterado para todos os usuários. A exclusão do arquivo não é um problema, nem renomear. Apenas alteração do conteúdo do arquivo.
Portanto, quando um usuário alterar seu arquivo, que é um link físico, o link físico será eliminado e uma cópia do arquivo original criada com as alterações aplicadas.
Isso é possível com qualquer sistema de arquivos ou qualquer hack ou recurso?
Você está procurando o recurso reflink , que foi introduzido em 2009. Ele só funciona com determinados sistemas de arquivos – atualmente Btrfs, XFS ( aparentemente? ) e OCFS2.
reflink=auto
se tornará a opção padrão na próxima versão do coreutils.Uma alternativa é a desduplicação do sistema de arquivos, que é suportada por Btrfs e ZFS, entre outros. Permite mesclar blocos idênticos "embaixo" dos arquivos. No ZFS isso acontece de forma síncrona (assim que o arquivo é gravado), enquanto no Btrfs é feito como um trabalho em lote posteriormente.
Por fim, algumas ferramentas de backup executam a desduplicação. Os formatos de arquivo usados por Restic e Borg são endereçados ao conteúdo (muito parecido com o Git), então blocos idênticos serão armazenados automaticamente apenas uma vez por repositório, mesmo que ocorram em arquivos separados.