Os sistemas Linux modernos suportam atributos de arquivo personalizados , pelo menos no ext4 e btrfs. Você pode usar getfattr
para listá-los e setfattr
para configurá-los. Os atributos personalizados são atributos estendidos no espaço de nome do usuário, ou seja, com um nome que comece com os cinco caracteres user.
.
$ touch foo
$ getfattr foo
$ setfattr -n user.archive -v $(date -r foo) foo
$ getfattr -d foo
# file: foo
user.archive="1471478895"
Você pode usar um atributo personalizado, se desejar. O valor pode ser qualquer string curta (a quantidade de armazenamento disponível depende do sistema de arquivos e da versão do kernel; algumas centenas de bytes devem ficar bem). Aqui, eu uso o timestamp do arquivo; uma modificação atualizaria o timestamp real, mas não a cópia no atributo personalizado.
Observe que, se o arquivo for modificado, excluindo-o e substituindo-o por uma nova versão, em vez de sobrescrever o arquivo existente, os atributos personalizados desaparecerão. Isso deve ser bom para o seu propósito: se o atributo não estiver presente, o arquivo deve ter um backup.
Programas incrementais de backup no mundo Unix não usam atributos personalizados. O que eles fazem é comparar o registro de data e hora do arquivo com o registro de data e hora do backup e fazer o backup do arquivo, se ele for alterado. Isso é mais confiável porque leva em conta o estado real do backup - backups feitos exclusivamente de acordo com o estado do sistema são mais propensos a arquivos perdidos devido a um backup que desaparece ou devido a erros cometidos ao manter o atributo.