Por que o rsync atualiza diretórios NTFS quando a origem não foi alterada?

2

Eu estou tendo aulas com muita análise fonética e gramatical. Eles me deram uma conta em uma rede do Windows 10. Como estou muito mais confortável com o Mac e o Linux (e como as horas de disponibilidade do Windows são limitadas), faço meu trabalho no meu laptop Mac.

Eu montei automaticamente meus diretórios NTFS, mas há algo esquisito em sua LAN, de modo que muitas vezes alguns aplicativos têm acesso somente leitura ou nenhum acesso.

Consequentemente, eu trabalho em uma cópia local e freqüentemente em rsync alterações. Mas o rsync * sempre atualiza todos os diretórios NTFS - apenas o diretório, nunca quaisquer arquivos (exceto aqueles que eu realmente mudei). A maioria desses diretórios, eu nunca naveguei, mas o rsync reporta atualizações até o final da árvore subdiretora. Não é importante - termina em segundos - mas ainda é bem estranho.

O que o Windows e o NTFS fazem a diretórios que nunca são acessados e fazem o rsync pensar que eles mudaram?

    
por WGroleau 10.08.2016 / 06:17

3 respostas

1

Permitir a comparação de mod-times com precisão reduzida

Aparece neste tipo de configuração, em que você monta em uma partição NTFS, para garantir que você use parâmetros apropriados, como --modify-window=5 , para aumentar o valor padrão para permitir a comparação de mod-times com precisão reduzida.

--modify-window 

    When comparing two timestamps, rsync treats the timestamps as
    being equal if they differ by no more than the modify-window value. This 
    is normally 0 (for an exact match), but you may find it useful to set 
    this to a larger value in some situations. In particular, when
    transferring to or from an MS Windows FAT filesystem (which represents               
    times with a 2-second resolution), --modify-window=1 is useful (allowing 
    times to differ by up to 1 second).

Mais recursos

por 10.08.2016 / 06:30
0

Primeiro, para responder ao problema de somente leitura dos programas. Como o compartilhamento de rede é controlado pelo Windows, o Windows só permite que certos usuários façam coisas. Pode ser um compartilhamento público, ou seja, qualquer pessoa pode visualizá-lo para baixar arquivos ect, mas não alterá-lo, a menos que especificamente adicionado para poder fazer isso. Desde que você está usando o Mac, que é semelhante ao Linux. Nem todo aplicativo linux que você está usando, está usando o mesmo nome de usuário com o qual você está atualmente conectado em seu Mac ou Linux. Portanto, uma vez que o programa não está usando o seu nome de usuário logado, não é dado privilégio para editar os arquivos de acordo com as janelas, já que o nome de usuário não corresponde.

Em segundo lugar, o Rsync é recursivo. Significado, ele passará por todos os diretórios. A menos que você o limite a um diretório específico, mas mesmo que você o limite para um diretório, ele continuará passando por todos os diretórios que estão no diretório de onde ele começou. É isso que ele projetou fazer. Daí a sua sincronização recursiva chamada. Agora, o motivo para a atualização dos diretórios e não dos arquivos pode ser como o rysnc está obtendo o registro de data e hora dos diretórios. Pode ser que, como os diretórios do Windows 10 não tenham um registro de data ou hora modificado ou acessado, apenas um registro de data quando o diretório foi criado, enquanto os arquivos possuem todos esses carimbos de data e hora, o que o rsync usa para determinar se precisa atualizar diretórios ou arquivos.

    
por 10.08.2016 / 06:28
0

Exclua explicitamente as opções% implícitas -a com --no-OPTION

Comentário:

Adding the modify-window in “rsync -av --bwlimit=200 --delete --modify-window=5 (HFS+) (NTFS)” made it stop updating unvisited directories. But a day later it did it again. An immediate repeat did not update them. Logging into Windows made it happen again. BUT, since then, it happens EVERY time, whether logged into Windows or not. Even if the rsync commands are only a second apart. Again, even with the unnecessary updates, it only takes a second, so it's not a big deal. But it does make reading the file list less convenient. WGroleau

Considere testar com essas opções para uma solução:

  •   --size-only             skip files that match in size
      -c, --checksum              skip based on checksum, not mod-time & size
      -O, --omit-dir-times        omit directories from --times
    

    source

Adicionalmente. . .

Como -a ( --archive ) inclui opções implícitas e é equivalente às opções -rlptgoD :

  • -r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -p, --perms                 preserve permissions
    -t, --times                 preserve modification times
    -g, --group                 preserve group
    -o, --owner                 preserve owner (super-user only)
    -D                          same as --devices --specials
    

    source

você pode precisar omitir algumas dessas opções explicitamente com --no-OPTION para garantir que atributos específicos sejam [ignorados] e não comparados entre esses dois sistemas de arquivos diferentes que você está sincronizando.

Por exemplo, adicione um deles como:

  • --no-o ignora o atributo do proprietário
  • --no-g ignora o atributo de grupo
  • --no-times ignora os atributos de tempo

Importante: A ordem das opções é importante: se você especificar --no-r -a , a opção -r será acaba sendo ligado, o oposto de -a --no-r .

  • --no-OPTION
    
        You may turn off one or more implied options by prefixing the option name
        with lqno-rq. Not all options may be prefixed with a lqno-rq: only options   
        that are implied by other options (e.g. --no-D, --no-perms) or have 
        different defaults in various circumstances (e.g. --no-whole-file, --no-
        blocking-io, --no-dirs). You may specify either the short or the long option 
        name after the lqno-rq prefix (e.g. --no-R is the same as --no-relative).
    
    For example: if you want to use -a (--archive) but don't want
    
        -o (--owner), instead of converting -a into -rlptgD, you could specify -a --
        no-o (or -a --no-owner).
    
    The order of the options is important: if you specify --no-r -a, the
    
        -r option would end up being turned on, the opposite of -a --no-r. Note also 
        that the side-effects of the --files-from option are NOT positional, as it '   
        affects the default state of several options and slightly changes the 
        meaning of -a (see the --files-from option for more details).
    

    source

Mais recursos

por 11.08.2016 / 23:52