Estou usando rsync
para backups incrementais, usando a --link-dest
opção de apontar para o backup anterior para que os arquivos inalterados sejam vinculados a ele.
Isso está funcionando, mas não para todos os arquivos. Por exemplo, tenho um diretório no backup contendo arquivos que não foram modificados em mais de três anos. Mas por alguma razão bizarra, apenas alguns deles são links físicos.
Inconvenientemente, os arquivos maiores são todos cópias (ou seja, há apenas um link para o arquivo, verificado via ls -l
). Mas esse também é o caso de alguns arquivos menores e, de fato, alguns arquivos com links físicos são maiores do que alguns arquivos copiados.
Não parece haver nenhum padrão que me permita prever quais serão cópias e quais links físicos. O tamanho do nome do arquivo e o tamanho do arquivo parecem irrelevantes, assim como a data de modificação: há uma mistura de tudo isso nas listas copiadas e com links físicos. Dito isso, os arquivos parecem ser consistentes em vários backups, então o que aconteceu para um backup parece ter acontecido para o próximo backup também.
Existe algum atributo (técnico ou não) de um arquivo, algum recurso, que faria com rsync
que copiá-lo em vez de vinculá-lo?
EDIT 1: Mencionar "atributo" me fez pensar se havia algum atributo que ls -l
não lista que pode ter um impacto, mas fazer lsattr
no diretório de origem mostra que todos os arquivos têm atributos idênticos.
EDIT 2: Eu disse anteriormente (agora deletado) que as permissões eram todas iguais, mas isso estava errado. As permissões eram as mesmas no diretório de destino (com backup). Estou usando --perms
(para preservar as permissões), então não sei porque as permissões não estão sendo preservadas. Eu também estava executando anteriormente como um usuário não root, mas agora estou tentando como root caso isso faça diferença, mas as permissões ainda não estão sendo preservadas, o que talvez seja o motivo pelo qual alguns arquivos parecem ter mudado - o arquivo foi 't, mas suas permissões aparentemente têm (pelo menos, quando comparado ao backup anterior com suas permissões incorretas).
EDIT 3: agora acho que é algo a ver com meu servidor CIFS. Há algo na mount.cifs
página do manual sobre a file_mode
opção: "Se o servidor não suportar as extensões CIFS Unix, isso substituirá o modo de arquivo padrão." Quando executo o mount
comando sem argumentos para listar as montagens, as opções listadas incluem file_mode=0755
e dir_mode=0755
que se relacionam com o que vejo. Não consigo chmod
um arquivo na montagem, então os arquivos que originalmente não tinham 0755
permissões são considerados alterados e, portanto, são copiados novamente - e mais uma vez obtêm as permissões erradas no backup por causa da montagem.