Existem várias soluções.
Antecedentes e amp; Desprezar o processo
- Abra o terminal ssh no servidor remoto.
- Inicie a
scptransferência como de costume. - Background o processo scp ( Ctrl + Z , depois o comando
bg.) - Desprezar o processo em segundo plano (
disown). - Encerre a sessão (
exit) e o processo continuará a ser executado na máquina remota.
Uma desvantagem desta abordagem é que os descritores de arquivo para stdout e stderr ainda conterão referências ao tty da sua sessão ssh. O terminal pode travar quando você tenta sair por causa disso. Você pode resolver isso digitando ~. para forçar o fechamento do seu cliente ssh (essa seqüência de escape deve seguir uma nova linha ... veja também ~? ). Se o processo que você está abandonando escreve para stdout ou stderr, o processo pode sair prematuramente se o buffer tty transbordar.
Crie uma sessão de tela e desconecte-a
OTela GNU pode ser usado para criar uma sessão de terminal remoto, que pode ser desanexada e continuar a ser executada servidor depois de sair da sessão. Você pode então voltar ao servidor em uma data posterior e reconectar à sessão.
- Faça login no servidor remoto por ssh.
- Inicie uma sessão de tela,
screen -D -R <session_name>. - Inicie a
scptransferência como de costume. - Separe a sessão de tela com Ctrl + A e então d .
- Encerrar a sessão ssh (
exit)
Para reativar a sessão:
- Faça login no servidor remoto por ssh.
- Recoloque-se na sessão de tela,
screen -D -R <session_name>
Executar o Comando sem Hangups
Veja a resposta usando nohup .
Use um Agendador de Tarefas
Esta é a melhor solução se esse for um tipo de tarefa periódica que você deseja automatizar.