Interrompendo o rsync com ctrl-c, devo usar `--partial` ou` --append`?

14

Eu gostaria de interromper rsynccom ctrl-c(digamos que depois de meia o arquivo foi transferido) e retomar sem ter que reenviar os dados que já tenham sido transferidos.

As informações stackexchange / google que encontrei parecem conflitantes. Encontrei alguns que dizem usar --partiale outros que dizem usar --append. Para mim, parece que os dois funcionariam.

Se eu quiser interromper o rsync com ctrl-c, devo usar --partialou --append?

Se ambos funcionariam, quando é melhor usar um vs o outro?

Trevor Boyd Smith
fonte

Respostas:

8

Para reiniciar, --partialé suficiente. Use --inplacese você realmente não deseja rsynccriar um arquivo temporário que mescla os dados copiados existentes e os novos, por exemplo, se houver rsyncproblemas de permissão ao criar um arquivo temporário na pasta de destino.

Use apenas --appendse você puder garantir que os dados parcialmente copiados ainda sejam idênticos à origem. (Geralmente, essa é uma otimização falsa.)

roaima
fonte
1
Então, quando eu uso as opções acima (na verdade, usando --append-confirm) e o rsync ainda afirma que está começando desde o início, e não vejo nenhuma alteração no tamanho do arquivo e o tempo restante do arquivo é o que era originalmente quando iniciei a cópia, o rsync está mentindo ou devo me preocupar?
Michael
@ Michael, se você tiver uma fonte e destino local, todas as regras serão alteradas.
### roaima #
Eu estava fazendo isso na LAN, mas depois de um pouco mais de experiência, parece que o problema é que, --append-verifyna verdade, é necessário ler as partes do arquivo nos dois lados que estão lá, não é mais rápido devido ao gargalo sendo uma unidade mais antiga no lado de leitura e não a própria LAN.
Michael
@ Michael bem, sim, se você pediu para verificar os dados já transmitidos, então ele tem que ler os dados!
roaima 21/05
1
@perper Eu nunca notei essa opção antes. Parece que seria melhor usá-lo --partial-dir, mas ainda não o experimentei.
roaima
3
  • --append pressupõe que o arquivo já exista no destino, apenas faz com que o rsync não verifique o conteúdo que já existe (mas veja abaixo).
  • --partial diz ao rsync para não excluir arquivos parcialmente transferidos.

Você também precisará --inplace com --partial(está implícito com --append).

Acontece que na --inplaceverdade implica --partial, é por isso que --appendé suficiente (implica o --inplaceque implica --partial). Mas, por --partialsi só, não é suficiente, você precisa --inplace; caso contrário, o rsync cria arquivos temporários em vez de atualizar o final.

spuk
fonte
Se eu quiser interromper o rsync com ctrl-c, eu usaria --append? Porque --partialpor si só não seria retomado.
Trevor Boyd Smith
Eu usaria apenas --inplace. O rsync "sempre recomeça" (tenta transferir os dados mínimos necessários). O que --appendfaz é dizer ao rsync para não verificar os dados já no destino, portanto, se o arquivo parcial no destino estiver corrompido, ele ficará corrompido --append. --appendpode ser interessante se, por exemplo, o arquivo parcial for muito grande e você não puder esperar (e tem certeza ou não se importa se ele estiver corrompido) ou alguma outra situação específica.
Spuk
1
no Fedora 20, man rsynca opção --appenddiz... Implies --inplace
Trevor Boyd Smith
1
--inplacevai funcionar. --appendfuncionará porque (como afirmei na resposta) implica --inplace, o que implica --partial(que manterá os arquivos parcialmente transferidos quando interrompidos pelo Ctrl-c, que era a pergunta original). Então, --appendsignifica "fazer como --inplace, mas não soma de verificação que já está no destino é uma diferença importante Se você não se preocupam com isso, use um...
Spuk
1
então qual é o sentido de --partial SEM --inplace
Evan Carroll