Obtenha o rsync para pular arquivos do mesmo tamanho

Obtenha o rsync para pular arquivos do mesmo tamanho

Estou usando o seguinte comando para copiar um grande número de grandes arquivos de vídeo para unidades externas.

rsync -Ph --inplace /Volumes/Production/Prefix* Prefix

Tivemos uma falha de energia e a cópia foi interrompida. Com o rsync não há problema em simplesmente reiniciá-lo, mas o problema é que demora um pouco para ele voltar ao ponto em que estava. Ele percorre todos os arquivos e parece que lê o arquivo inteiro. Sua velocidade é relatada como sendo cerca de 3 a 5 vezes mais rápida do que normalmente é, até quando chega ao ponto de começar a copiar novamente.

O que ele está fazendo exatamente durante esse período? Ele está lendo todo o arquivo e comparando-o com a fonte? Ou está fazendo outra coisa sofisticada? Existe uma maneira de fazer com que o rsync pule os arquivos concluídos mais rapidamente? Por exemplo, diga para verificar apenas arquivos que tenham um tamanho de arquivo diferente ou algo assim?

Responder1

A causa do seu problema não é adicionar -t(ou -a, que incorpora -te várias outras opções) noanteriorexecução do rsync.

-té necessário para preservar os horários de modificação do arquivo durante a cópia, de forma que, uma vez copiado, o horário da última modificação do arquivo de destino seja igual ao do arquivo de origem. Sem isso, as execuções subsequentes do rsync não considerarão nenhum arquivo de destino correspondente à origem e sempre os atualizarão.

Comportamento de comparação do Rsync

Por padrão, o rsync ignorará um arquivo de destino existente se a hora da última modificação e o tamanho do arquivo corresponderem aos do arquivo de origem.

Se recuperando disso

Se você tem certeza de que nenhum outro software pode ter modificado os arquivos de destino nesse meio tempo e deseja apenas retomar, você pode usar a --size-onlyopção. Isso modifica o comportamento de comparação de forma que o rsync ignore um arquivo de destino existente se o tamanho do arquivo corresponder, sem verificar a hora da última modificação.

O problema que você terá no futuro é que, se quiser sincronizar os diretórios novamente, você ainda precisará que os tempos de modificação dos arquivos correspondam ou precisará ignorar os tempos de modificação e confiar que os arquivos não foram modificados por outros. software (de maneiras que não alteram o tamanho).

Explicação das opções

  • Comparação rsync padrão: se o tamanho do arquivo e a hora da última modificação corresponderem, pule.

  • --size-only: se os tamanhos dos arquivos corresponderem, pule.

  • --ignore-times: nunca pule. Tempos de arquivoe tamanhossão ignorados.

  • --checksum: se os tamanhos dos arquivos corresponderem, calcule uma soma de verificação de ambos os arquivos e, se corresponderem, pule.

A --size-onlyopção aumenta a probabilidade de pular arquivos, enquanto as --ignore-timesopções --checksume tornam menos provável pular arquivos.

Responder2

rsynctem uma opção: --size-onlyqual faz o que você quer.

Responder3

O Rsync verifica o tempo de modificação e o tamanho dos arquivos por padrão. Se você adicionar um --checksum, ele será comparado com o arquivo inteiro (ou seja: independentemente do horário do mod e da correspondência de tamanho).

Responder4

Como você não fez -a para o arquivo, ele não copiou os tempos, então pensa que são arquivos diferentes devido à incompatibilidade de carimbo de data e hora e, em seguida, verifica o arquivo inteiro.

Se você estiver fazendo cópias onde o carimbo de data/hora pode/deve corresponder: sempre inclua -a.

Por enquanto (embora há muito tempo), você pode tentar adicionar--ignore-times

informação relacionada