
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 -t
e 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-only
opçã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-only
opção aumenta a probabilidade de pular arquivos, enquanto as --ignore-times
opções --checksum
e tornam menos provável pular arquivos.
Responder2
rsync
tem uma opção: --size-only
qual 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