Existem várias soluções.
Antecedentes e amp; Desprezar o processo
- Abra o terminal ssh no servidor remoto.
- Inicie a
scp
transferê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
scp
transferê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.