rsync vs mtime e ctime

1

Estou usando rsync para Android para fazer backup de meu telefone em um sistema de arquivos NTFS remoto em um sistema Linux por um tempo.

Recentemente, o HDD contendo o sistema de arquivos NTFS começou a falhar (ou lançar "Erros de E / S"), então aproveitei a oportunidade para copiar todos os arquivos para um novo HDD e um novo sistema de arquivos NTFS. Neste exemplo, usei a ferramenta "FastCopy v2.11" para Windows.

Meu problema é que quando eu faço um "dry run" do rsync eu posso ver que ele quer recopiar arquivos que já existem na pasta rsync remota. Por exemplo, quando eu corro com "-iv" eu recebo esse tipo de saída:

O que, como eu entendo, significa que o rsync quer copiar este arquivo para o rsync remoto por causa de uma diferença de timestamp.

O mais estranho é que, se eu uso "Astro" para o Android ver as propriedades do arquivo local, posso ver que o tamanho do arquivo, o tempo modificado e a soma de verificação MD5 são exatamente os mesmos do arquivo remoto (usando ls -l para verificar o horário modificado).

Dado que copiei recentemente os arquivos rsync remotos de um sistema de arquivos NTFS antigo, a ctime do arquivo remoto é diferente (usando ls -lc ).

O rsync examina o ctime remoto e, em caso afirmativo, existe alguma maneira de usar rsync ou ntfs-3g para contornar este problema?

    
por wombat 11.11.2013 / 00:18

2 respostas

0

Por padrão, o rsync depende do mtime / ctime e do tamanho da comparação de arquivos, mas se você usar o -c , ele os ignorará e usará somas de verificação de conteúdo.

O problema é que esse caminho pode ser muito mais lento (as somas de verificação podem ser muito caras para calcular em seu dispositivo móvel) e você pode precisar executá-lo sempre de agora em diante, por isso talvez faça sentido deixá-lo rodar uma vez sem somas de verificação, faça tudo para copiar tudo novamente com base no método de comparação mtime / ctime / size que ele usa por padrão, mas pelo menos nas próximas vezes você não gastará tempo calculando checksums.

    
por 11.11.2013 / 00:29
0

Eu apenas fiz uma experiência rápida; O rsync compara o mtime e ignora o ctime (no Mac, pelo menos.) Infelizmente, os sistemas de arquivos do Windows possuem apenas ctime, que eles retornam para atime e mtime também.

É por isso que o rsync é tão agressivo ao copiar arquivos de sistemas de arquivos do Windows que não precisam ser copiados - o mtime no arquivo Unix está sendo comparado ao "ctime" no arquivo do Windows.

    
por 10.01.2017 / 23:03