O rsync pode consertar marcações de horário sem fazer o download novamente?

4

Eu espelhei 100 GiB de arquivos. No meu espelho, alguns dos timestamps e talvez as permissões de arquivo estão erradas. Eu gostaria de usar o rsync para corrigir isso.

O servidor do qual fiz o download tem mais de 100 GiB de arquivos. Meu espelho espelha certos arquivos de cada diretório de origem. Não espelha diretórios inteiros.

Como posso dizer ao rsync para corrigir meus timestamps e permissões de arquivo, sem baixar novamente o GiB?

Para mais informações, estou tentando o rsync -av --list-only HOST::MODULE >/tmp/list.txt . Depois de obter esses dados, se nenhum de vocês puder me dar uma resposta melhor, escreverei um script para tocar cada um dos meus arquivos com base nos dados.

Mas não há maneira mais simples de fazer o trabalho?

(Existe esta questão , mas não parece responder ao que eu preciso.)

    
por thb 05.05.2015 / 00:16

1 resposta

7

Se sua origem e destino estiverem em sistemas separados, com um cliente rsync conversando com um servidor rsync (de qualquer tipo), as permissões e os registros de data e hora serão atualizados sem uma transferência de conteúdo de dados. Por exemplo:

rsync -avP --existing server:/path/to/source /path/to/target
rsync -avP --existing server::module /path/to/target

Por outro lado, se a origem e o destino forem gerenciados pelo mesmo processo rsync , como quando o sistema de arquivos do servidor for acessível via NFS, não haverá uma maneira eficiente de confirmar se os dados são os mesmos. em ambos os casos, ele abandona seus atalhos e simplesmente copia os dados com as permissões e registros de data e hora corrigidos. Por exemplo:

rsync -avP --existing /path/to/server/source /path/to/target

Se você tiver este segundo cenário e tiver absoluta certeza de que o conteúdo do arquivo é idêntico, há uma solução alternativa que forçará rsync a assumir que o conteúdo é o mesmo - mesmo que sua "verificação rápida" falhe - e apenas atualize as permissões e o timestamp:

rsync -avP --existing --size-only /path/to/server/source /path/to/target

O sinalizador -existing garante que nenhum arquivo novo seja criado no local de destino, mas que os arquivos existentes sejam atualizados adequadamente.

    
por 05.05.2015 / 00:38

Tags