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.
#! / bin / bash
echo -e "Digite o caminho completo do arquivo (escapado):"
caminho read -r
eco "Caminho: $ caminho"
echo -e "Digite o destino:"
read -r dst
eco "Destino: $ dst"
enquanto [1]
Faz
rsync --progress --partial --append -vz -e ssh "USUÁRIO @ HOST: $ path" $ dst
se ["$?" = "0"]; então
eco "rsync concluído normalmente"
Saída
outro
eco "falha do rsync. Tentando novamente em um minuto ..."
dormir 60
fi
feito
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).
while ./run_script; do echo "Retrying..."; done; echo "Done."
Garantarun_script
retorno0
sobre o sucesso.