Como posso pausar / retomar o rsync

49

Como posso pausar um rsync em execução?

Na primeira vez, fiz Ctrl+ Cpara matá-lo e usei a -Pbandeira para executar novamente. É propenso a corromper a transferência de arquivos atual?

Na segunda vez, simplesmente coloquei o MacOS em repouso (fechando a tampa). Observando o processo em execução, vejo 2 (não sei por que) com o status 'S'.

Tentei usar

kill -SIGCONT

para retomar o processo, mas não tem efeito.

qnoid
fonte

Respostas:

61

Você pode pausar qualquer programa enviando um sinal TSTP(educado) ou STOP(forçado). No terminal em que você entrou rsync, pressionando Ctrl+ Zenvia TSTP. Continue com o comando fgou bgno terminal ou com um CONTsinal.

É seguro matar um processo rsync e executar a coisa toda novamente; continuará de onde parou. Pode ser um pouco ineficiente, principalmente se você não tiver passado --partial(incluído -P), porque rsyncirá verificar todos os arquivos novamente e processar o arquivo em que foi interrompido do zero.

Pode haver combinações incomuns de opções que levarão a que alguns arquivos não sejam sincronizados corretamente, talvez --inplacecom outra coisa, mas acho que nenhuma opção única causará isso.

Se você desconectar o laptop e reconectá-lo em outro lugar, poderá obter um endereço IP diferente. Em seguida, a conexão TCP usada pelo rsync seria cortada; portanto, você teria que eliminá-la e iniciar novamente. Isso também pode acontecer se você suspender o laptop e o tempo limite da conexão TCP. O tempo limite acabará sendo filtrado para o nível do aplicativo, mas pode demorar um pouco. É seguro pressionar Ctrl+ Ce executar o rsync novamente.

Gilles 'SO- parar de ser mau'
fonte
11
Na verdade, matar rsync -avhsimplesmente solta o arquivo atual que está sendo copiado, se o arquivo for grande, você perderá bastante tempo. Talvez Ctrl+zmover o arquivo temporário (comece com um ponto) e depois o Ctrl-Crsync possa ser uma solução melhor.
malat
Obrigado por uma explicação tão detalhada. Para esclarecer: ctrl + z para pausar, fg para retomar, bg para parar.
Praesagus 30/10/2015
3
@Praesagus bgpara colocar processo para a b ack g rodada , para não parar.
Jari Keinänen
--partialé o que eu precisava. Estou tentando copiar 21 GB de dados e, dentre esses, tenho um arquivo de 6,6 GB. O problema é que a rede mata minha conexão após alguns GB de transferência de dados, e --partialé exatamente isso que eu preciso.
AnthonyD973
20

Ctrl+ Zpara suspender e:

$ fg

para continuar, use

$ jobs

ver trabalhos suspensos; bg [number]para embasá-los; fg [number]para o primeiro plano.

gauteh
fonte
2
Ctrl+Ssomente suspende a saída de rolagem, não o programa subjacente (a menos que seja bloqueado aguardando o terminal aceitar sua saída) e somente se você não o tiver desativado.
Gilles 'SO- stop be evil'
11
Com o status 'S' atual, ele não é retomado. É seguro matá-lo usando Ctrl + C e executar o rsync novamente? Que outras opções eu tenho? Terá isso em mente na próxima vez, obrigado.
Qnoid
11
Observe também que é provável que, após algum tempo, o Ctrl-Z para suspender um processo resulte no tempo limite de qualquer conexão de rede TCP estabelecida por esse programa. Assim, deixar um rsync suspenso por mais de alguns minutos provavelmente fará com que ele saia abruptamente com uma mensagem de erro quando você o coloca novamente em primeiro plano e descobre que seus soquetes abertos estão retornando erros de leituras e gravações.
perfil completo de Jim Dennis
8

Corra rsynccom a --partialbandeira. Ele manterá transferências parciais e retomará os arquivos parciais quando iniciado.

bahamat
fonte
5

As pessoas aqui mencionaram o uso dos --partialtrabalhos de sinalizador, mas é necessário mencionar que ele somente será retomado quando o sinalizador --appendou --append-verifyfor usado ao reiniciar.

--partialcria um arquivo oculto do arquivo que não concluiu o processo de sincronização, o arquivo é mantido quando você interrompe a sincronização. Ele continua a concluir o arquivo quando você usa --appendapós reiniciar, caso contrário, quando não estiver usando --append, o arquivo oculto incompleto é mantido e permanece incompleto.

Conclusão: você pode simplesmente interromper o rsync --partialuso de Ctrl+ Cse usar rsync --appendao retomar

(Fonte: o rsync pode retomar após ser interrompido? Recuperado em 5 de abril de 2016)

Mehdi Nellen
fonte
então, se eu já usei rsync --avP <source> <destination>, tenho que pausá-lo com CTRL + C e continuar apenas digitando rysnc --append?
kingmakerking
@kingmakerking yes
Mehdi Nellen
@kingmakerking: Não. Você ainda precisa das opções do seu primeiro rsync, a origem e o destino. Para continuar, reinicie o comando rsync anterior e adicione --append às opções existentes.
Mvk #