Dúvida Execução Rsync

Boa noite a todos.
Pessoal preciso de uma ajuda de vocês pra entender e tentar solucionar uma situação.
Eu possuo um servidor de backup, nessa máquina tenho um script que roda um rsync em 30 máquinas de usuários.
O script que roda o rsync acessa e pastas específicas nas máquinas de usuários, monta elas no servidor, faz o clone dos arquivos, e desmonta a pasta no PC do usuário.
Esses script faz isso com um usuário após o outro em ordem alfabética até finalizar os 30.
O processo de cópia dos arquivos está ocorrendo perfeitamente.
Porém tenho um problema e é aí a minha dúvida.
Supondo que o script esteja executando o backup da maquina 20, montando a pasta e iniciando a cópia. Caso o usuário desligue o computador antes que a cópia seja finalizada e a pasta desmontada o processo fica travado, morto digamos assim. Se eu não finalizar o PID desse usuário especificamente de forma manual, todos os demais não são executados. 21, 22, 23… todos ficam no aguardo do 20 terminar pra seguir a fila.
Minha dúvida é?
Existe algum comando que identifique essa inatividade do processo, que permita que após, sei lá, 5 min sem transferir nenhum dado, esse processo de um usuário seja finalizado automaticamente e o script siga para o outro usuário.
Fico muito grato caso alguém tenha uma possível solução.
Valeu a todos.

Olá @WArmond, tudo bem contigo?

Uma das opções possíveis é adicionar o parâmetro “timeout” no seu script do Rsync, isso fará a conexão ser abortada caso não sejam transferidos dados.

--timeout=TIMEOUT
       This option allows you to set a maximum I/O timeout in seconds. If no data is transferred for  the
       specified time then rsync will exit.

:vulcan_salute:

1 curtida

Bom dia. Já usava esta opção no comando mais parece não estar aceitando.
Está assim no script.

/usr/bin/rsync -radzvp —delete —timeout=20 /mnt/webbackup/Users/ •pasta do usuário•

Att

Você já executou o comando manualmente para ver se é exibida alguma mensagem de erro?

Outro ponto que está me chamando a atenção, os parâmetros “r” e “d” não são possuem efeito contrário entre si? Como eu nunca usei o “-d” talvez eu esteja interpretando de forma incorreta, mas, qual é o seu objetivo com ele?

Lendo o manual do Rsync encontrei o parâmetro contimeout que pode ser útil também.

:vulcan_salute:

Assumindo que o comando está dentro de um for, se fazer desse jeito:

for i in {1..10}; do
    eval '/usr/bin/rsync -radzvp —delete —timeout=20 /mnt/webbackup/Users/ •pasta do usuário• &'
done

Cada “instância” do rsync vai ser executado em background paralelamente graças ao caractere “&”.
Assim, se alguma “instância” do rsync der timeout, não vai ser problema porquê as outras estão sendo executadas ao mesmo tempo.

1 curtida

Essa é uma solução interessante, apenas fique atento ao consumo de recursos do servidor.

Se o volume de dados for grande, existe a chance da cópia demorar muito mais devido à concorrência entre as conexões.

:vulcan_salute:

1 curtida