No Ubuntu, quero copiar um arquivo grande do meu disco rígido para um disco removível por rsync
. Por algum outro motivo, a operação não pode ser concluída em uma única execução. Então, eu estou tentando descobrir como usar rsync
para continuar copiando o arquivo de onde parou da última vez.
Tentei usar a opção --partial
ou --inplace
, mas junto com --progress
, descobri rsync
com --partial
ou --inplace
realmente inicia desde o início, em vez do que restou da última vez. Parar manualmente rsync
e verificar o tamanho do arquivo recebido também confirmou o que encontrei.
Mas com --append
, o rsync começa com o que restou da última vez.
Estou confuso como eu vi na página do homem --partial
, --inplace
e --append
parecem se relacionar com a retomada copiando a partir do que foi deixado pela última vez. Alguém é capaz de explicar a diferença? Por que não fazer --partial
ou --inplace
de trabalho para retomar a cópia? É verdade que, para retomar a cópia, rsync
tem que trabalhar com a --append
opção?
Além disso, se um arquivo parcial foi deixado mv
ou cp
não pelo rsync, a rsync --append
cópia do arquivo será retomada corretamente?
--append
marcasrsync
acreditam que, se dois arquivos correspondentes têm comprimento diferente, então o mais curto é idêntica à parte inicial do longa. Portanto, sim, se você começar a copiar um arquivo grandecp
e interromper o processo de cópia,rsync --append
copiará apenas a parte restante do arquivo. ( Nota: secp
for interrompido por uma falha no sistema, há uma pequena chance de que o conteúdo e os metadados do arquivo não estejam sincronizados, ou seja, o arquivo está corrompido. Nesse caso, executarrsync
novamente sem--append
corrigir o problema.)--partial
sem--append
.--append
e--append-verify
tem um caso de falha perigosa: quando o arquivo do receptor é do mesmo tamanho ou maior, mas possui dados diferentes. Sugiro uma solução baseada em seu--no-whole-file
lugar.Esteja ciente de que
--append
implica--inplace
, o que implica--partial
.Ao usá-
--partial
lo, você deversync
deixar transferências parciais e recomeçá-las nas tentativas subsequentes.Ao usar,
--append
você deversync
deixar os arquivos parciais e recomeçá-los na próxima vez. Após a transferênciarsync
, verifique apenas a soma de verificação dos dados transmitidos.--append-verify
inclui o arquivo inteiro na verificação da soma de verificação, incluindo qualquer parte transferida em uma transferência anterior.Com uma
--append
ou--append-verify
uma falha na verificação da soma de verificação, o arquivo deve ser retransmitido completamente (usando--inplace
)Você poderá retomar uma operação
mv
oucp
,rsync
mas poderá usar a--append-verify
opção para ter tranqüilidade.Observe que o uso
--append
fazrsync
com que copiar apenas os arquivos cujo tamanho no receptor seja menor que o tamanho no remetente (independentemente dos carimbos de data / hora) ou que estejam ausentes no receptor. Pela documentação desta opção:Mais informações na página do manual
fonte
--append
e--append-verify
tem um caso de falha perigosa: quando o arquivo do receptor é do mesmo tamanho ou maior, mas possui dados diferentes. Sugiro uma solução baseada em seu--no-whole-file
lugar.--checksum
deve ser usada. Não consigo encontrá-lo especificado explicitamente, mas logicamente qualquer uma das opções de retomada deve implicar--no-whole-file
porque--whole-file
deve ser incompatível.--append-verify
pula arquivos de tamanho igual ou maior com datas diferentes , o que pode ser "inesperado". Não há necessidade de--checksum
todos os arquivos, poisrsync
ele fará uma soma de verificação de arquivo inteiro, mas apenas no que ele é transferido.--checksum
informarsync
à soma de verificação dos arquivos antes do envio, o que garante que todos os arquivos alterados sejam transferidos, independentemente do tamanho / hora. Você tem uma fonte para o--append-verify
comportamento inesperado , pois o que você descreve não corresponde à documentação ou à minha experiência (limitada)?--append-verify
refere-se ao--append
que diz:If a file needs to be transferred and its size on the receiver is the same or longer than the size on the sender, the file is skipped.
Mesmo que um arquivo precise ser transferido por causa--checksum
disso, ele ainda pode ser ignorado.David Schwartz está correto
--partial
(ou melhor-P
) faz o que você deseja. Eu verifiquei isso em um arquivo 37G que foi parado ~ 8g nele, em uma rede. O rsync examinou rapidamente as primeiras partes do parcial (mostrando o progresso que estava ocorrendo graças a-P
) e, em seguida, retomou a transferência para o final do arquivo parcial.fonte
--whole-file
descrição da opção.--no-W
(que realmente funciona!)--no-W
menos que entenda exatamente o que isso significa para os arquivos locais. Veja unix.stackexchange.com/a/181018/100397Você estava fazendo certo,
--partial
faz o que quer. Parece estar começando do início, porque sempre começa no início da lista de blocos de dados de arquivo que ele precisa copiar. A--append
opção é perigosa e resultará em um arquivo corrompido se os dados não corresponderem por algum motivo.fonte
--append
continuadas a partir do deslocamento de bytes).Por padrão,
rsync
será ativado--whole-file
se estiver transferindo do disco local para o disco local. Isso reiniciará uma transferência interrompida desde o início, em vez de verificar as partes que já estão lá.Para desativar isso, use:
Combinar isso com
--inplace
ou--partial
permitirá retomar a transferência posteriormente.Meu alias para usar
rsync
para copiar é:Aviso : tenha cuidado ao usar
--append-verify
, pois pulará qualquer arquivo de destino que seja do mesmo tamanho ou maior.fonte
rsync
compare os arquivos de origem e de destino correspondentes antes da transferência para enviar apenas as partes que foram alteradas (transferência delta).--no-whole-file
mandarsync
fazer o mesmo para a cópia local para local. A documentação não sugere que isso afetaria a retomada de transferências parciais de arquivos únicos.rsync
pulará arquivos com exatamente o mesmo tamanho e timestamps por design. Nem--append-verify
nem--no-whole-file
deve mudar esse comportamento, mas--checksum
deve funcionar com qualquer um para a paz de espírito ao custo de IO de disco--append-verify
pula arquivos de tamanho igual ou maior com datas diferentes , o que pode ser "inesperado". Não há necessidade de--checksum
todos os arquivos, poisrsync
ele fará uma soma de verificação de arquivo inteiro, mas apenas no que ele é transferido.