Eu tenho que transferir grandes quantidades de dados (> 80 GB) sobre ssh usando o rsync. Tudo está funcionando bem, mas a conexão DSL de onde os dados de backup são enviados cairá uma vez a cada 24 horas por até 3 minutos (a troca de provedor não é uma opção).
Como é que eu:
Reiniciar automaticamente a transferência quando a conexão for restaurada?
Certifique-se de que não haja acidentalmente dois comandos rsync em execução ao mesmo tempo?
linux
command-line
ssh
rsync
Sathyajith Bhat
fonte
fonte
while ./run_script; do echo "Retrying..."; done; echo "Done."
Garantarun_script
retorno0
sobre o sucesso.Respostas:
O seguinte deve ser útil:
Quando a conexão morre, o rsync fecha com um código de saída diferente de zero. Esse script simplesmente continua re-executando o rsync, permitindo que ele continue até que a sincronização seja concluída normalmente.
fonte
Isso faz o mesmo que a resposta de Peter, mas oferece ao usuário a opção de qual arquivo remoto ele deseja e onde ele deseja salvá-lo (além de realizar o rsync sobre ssh). Substitua USER e HOST pelo seu nome de usuário e host, respectivamente.
As opções rsync usadas aqui permitem as estatísticas de progresso durante a transferência, o salvamento de arquivos parciais em caso de falha inesperada e a capacidade de anexar arquivos parcialmente concluídos após a retomada. A opção -v aumenta a verbosidade, a opção -z permite a compactação (boa para uma conexão lenta, mas requer mais energia da CPU nas duas extremidades) e a opção -e nos permite realizar essa transferência pelo ssh (a criptografia sempre é boa).
Nota: Use isso apenas se você tiver o login de chave pública ativado com seu ssh; caso contrário, ele solicitará uma senha quando reiniciar (eliminando todas as funcionalidades do script).
fonte
supervisor daemon (um gerenciador de controle de processo) pode funcionar muito bem após a criação de certificados rsa de ambos os lados, com uma configuração semelhante da seguinte: (/ etc / supervisor / supervisord.conf é o caminho do arquivo de configuração em sistemas baseados em debian)
fonte
A resposta do @ Peter parece ser muito útil, mas para mim era importante usar a
--update
opção. Depois que a conexão foi retomada, o--update
rsync estava tentando sincronizar tudo desde o início. Com--update
, os arquivos que já existem são ignorados.rsync --partial --update --progress -r [SOURCE] [DESTINATION]
fonte
--update
ignora arquivos que já existem ... Incluindo aqueles que não foram completamente copiados para o destino. Eu acho que vai contra a maioria dos casos de uso.rsync --partial --update file1 remotehost:file1
. depois de transferir 15% quebrei a transferência (kill -KILL).