Porque é que o Rsync volta a copiar ficheiros quando o tamanho e a data apresentada coincidem?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

O Rsync pode voltar a copiar ficheiros cujo tamanho e data visíveis correspondem quando os tempos de modificação brutos, as regras de comparação ou as opções de transferência ainda diferem.

Os exploradores de ficheiros ocultam frequentemente os carimbos de data e hora inferiores a um segundo e mostram apenas uma data local arredondada, enquanto o Rsync compara os metadados expostos por cada ponto final e também pode ser instruído a ignorar correspondências de tempo, comparar somas de verificação ou atualizar metadados. Assim, uma tarefa pode apresentar o mesmo tamanho e data legíveis por humanos e, ainda assim, selecionar o ficheiro porque os nanossegundos diferem, um sistema de ficheiros arredonda o tempo, um cliente SMB reescreve o carimbo de data e hora ou o comando ignora explicitamente a verificação rápida normal.

Confirme que o Rsync está a selecionar o ficheiro para transferência de dados

Execute a tarefa como uma simulação, com alterações discriminadas, e guarde o comando exato, o caminho de origem, o caminho de destino, as versões do Rsync e um nome de ficheiro representativo.

O manual oficial do Rsync explica que a verificação rápida predefinida compara o tamanho do ficheiro e a hora de modificação, enquanto a saída discriminada identifica quais os atributos que causaram uma atualização.

Se o código discriminado mostrar apenas alterações de permissões, proprietário, grupo, ACL ou atributos estendidos, o ficheiro pode ser novamente analisado sem retransmitir todo o conteúdo.

Compare os tempos de modificação brutos em vez da data apresentada

Leia os tempos de modificação da origem e do destino com precisão de nanossegundos e compare os respetivos valores numéricos de época nos sistemas que executam o emissor e o recetor.

A estrutura stat do Linux suporta carimbos de data e hora de nanossegundos, pelo que dois ficheiros apresentados como estando no mesmo segundo podem ter valores diferentes.

Um explorador que mostre apenas minutos ou segundos não pode provar que os tempos de modificação subjacentes coincidem. Registe os valores brutos antes de voltar a tocar nos ficheiros.

Verifique a precisão dos carimbos de data e hora e a janela de modificação

Identifique todos os sistemas de ficheiros no caminho, incluindo FAT, exFAT, NTFS, SMB, NFS, extração de arquivos e volumes amovíveis de preparação.

O manual do Rsync para Debian documenta o funcionamento de modify-window, incluindo a tolerância para sistemas de ficheiros que não conseguem armazenar uma precisão idêntica nos carimbos de data e hora.

Utilize uma janela diferente de zero apenas depois de medir a diferença. Uma janela demasiado ampla pode ocultar um ficheiro genuinamente alterado com o mesmo tamanho.

Audite as opções que substituem a verificação rápida normal

Inspecione o comando agendado completo e qualquer script auxiliar, interface NAS, variável de ambiente, ficheiro de inclusão ou predefinição que adicione opções.

A referência do Rsync para Ubuntu indica que ignore-times força as atualizações, o modo de soma de verificação substitui o teste de tempo e size-only ignora o tempo de modificação.

Remova apenas a opção comprovadamente responsável. O modo de soma de verificação pode gerar muitas leituras, mesmo quando poucos dados atravessam a rede.

Verifique se o SMB ou o Windows reescreve o tempo de destino

Calcule o hash e registe o carimbo de data e hora do destino imediatamente após a transferência, depois de fechar a sessão SMB e depois de a reabrir a partir de outro cliente.

A Microsoft documenta que as aplicações podem definir e obter carimbos de data e hora de ficheiros, enquanto os sistemas de ficheiros e as aplicações podem atualizar campos individuais em momentos diferentes.

Se o tempo de destino mudar apenas depois de um indexador, aplicação multimédia, cliente de nuvem ou fluxo de trabalho SMB lhe aceder, corrija esse processo de escrita em vez do Rsync.

Separe o tempo de modificação dos outros metadados

Compare o tempo de modificação, o tempo de alteração do estado, as permissões, a propriedade, as ACL, os atributos estendidos, as ligações físicas e as ligações simbólicas.

O utilitário stat do NetBSD expõe os campos brutos do estado dos ficheiros, ajudando a distinguir o tempo de modificação do conteúdo de outras alterações de metadados.

As opções de arquivo, ACL, xattr, proprietário ou grupo podem desencadear trabalho de metadados. Leia o código discriminado em vez de considerar todos os caminhos listados como uma transferência completa do conteúdo.

Execute um teste com um ficheiro e corrija a menor diferença comprovada

Copie um ficheiro de teste fechado, preserve os metadados pretendidos, volte a executar o mesmo comando e compare a saída discriminada, os bytes transferidos e os carimbos de data e hora brutos.

O artigo da ZimaSpace sobre cópias de segurança incrementais inesperadamente grandes aborda causas mais amplas relacionadas com a cadeia de cópias de segurança; este artigo isola as regras de seleção de ficheiros do Rsync.

O problema está resolvido quando uma nova execução sem alterações ignora o ficheiro de teste ou executa apenas a atualização de metadados que configurou intencionalmente.

Perguntas frequentes

Porque é que as datas parecem idênticas no explorador de ficheiros?

O explorador pode arredondar para segundos ou minutos e apresentar a hora local, enquanto o Rsync recebe um carimbo de data e hora de modificação mais preciso.

O modo de soma de verificação impede cópias desnecessárias?

Pode evitar a transferência quando o conteúdo coincide apesar de os tempos serem diferentes, mas tem de ler e calcular o hash dos ficheiros com o mesmo tamanho em ambos os lados.

Os fusos horários podem causar transferências repetidas do Rsync?

A apresentação de um fuso horário, por si só, não deve alterar os carimbos de data e hora numéricos, mas as aplicações ou os sistemas de ficheiros que os convertem ou arredondam podem fazê-lo.

Suporte e Dicas

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.