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 há 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 vinculados são maiores do que alguns arquivos copiados.
Não parece haver nenhum padrão que me permita prever quais serão as cópias e quais serão os links físicos. O comprimento e o tamanho do nome do arquivo parecem irrelevantes, assim como a data de modificação: há uma mistura de tudo isso nas listas copiadas e vinculadas. Dito isto, os arquivos fazemparecerpara ser consistente em vários backups, então o que aconteceu com um backup parece ter acontecido com o próximo backup também.
Existe algum atributo (técnico ou não) de um arquivo, algum recurso, que faria com que rsync
ele fosse copiado em vez de vinculá-lo?
EDITAR 1:Mencionar "atributo" me fez pensar se havia algum atributo que ls -l
não está listado e que pode ter um impacto, mas fazer isso lsattr
no diretório de origem mostra que todos os arquivos têm atributos idênticos.
EDITAR 2:Eu disse anteriormente (agora excluído) que as permissões eram todas iguais, mas isso estava errado. As permissões eram as mesmas no diretório de destino (backup). Estou usando --perms
(para preservar permissões), então não sei por que 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 sido alterados - o arquivo foi 't, mas suas permissões aparentemente têm (pelo menos, quando comparado ao backup anterior com suas permissões incorretas).
EDITAR 3:Agora acho que tem algo a ver com meu servidor CIFS. Há algo na mount.cifs
página de 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 mount
o comando sem argumentos para listar as montagens, as opções listadas incluem file_mode=0755
e dir_mode=0755
qual está de acordo 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 copiados novamente - e mais uma vez obtêm as permissões erradas no backup por causa da montagem.
Responder1
Mais uma solução alternativa do que uma solução, agora evito usar --perms
/ -p
ou qualquer coisa que implique isso. Obviamente, minhas permissões não são copiadas, mas pelo menos ele não acha que um arquivo inalterado foi alterado apenas porque suas permissões são diferentes.