Usando SCP e nohup para transferir pastas grandes entre servidores

1

Eu quero copiar uma pasta de ~ 50GB de um servidor para outro. Isso é compreensivelmente vai demorar um pouco, então eu gostaria de poder executá-lo "em segundo plano". Usar o comando SCP padrão requer que eu mantenha o console aberto. Eu li sobre nohup , o que parece que deve fazer o truque, mas estou lutando para fazê-lo funcionar. Mesmo isso parece exigir que o console seja deixado aberto - depois de digitar o comando, o programa nohup permanece aberto, e se eu pressionar CTRL + C para sair dele então a transferência para. Eu estou entendendo mal o que o nohup faz? Ou como mais posso conseguir isso?

    
por clb 15.11.2016 / 00:25

3 respostas

1

Acho que seria mais fácil iniciar a scp de uma sessão screen e, depois de copiar, desanexar da screen , a qualquer momento você pode voltar para a sessão da tela e verificar como está indo.

screen
scp foo bar

Ctrl a seguido por d para separar da tela

Em seguida, volte a ligar ao ecrã:

screen -x
    
por ssebbass 15.11.2016 / 00:40
0

O nome nohup refere-se ao sinal HUP , que era tradicionalmente enviado para processos quando a linha (telefônica) de um terminal estava conectada a um servidor era desconectada. nohup impede que o sinal seja enviado, mesmo quando "desligar" atualmente significa apenas "fechar a janela do terminal".

tl; dr você quer apenas fechar a janela do terminal (ou matar a conexão ssh ao seu lado) em vez de sair do servidor regularmente. nohup manterá seu processo em execução, mesmo se a conexão do terminal quebrar de uma forma ou de outra.

    
por mikezter 15.11.2016 / 00:42
0

Bem, existem alguns problemas:

  1. Se você quiser executar o comando em segundo plano, precisará anexar & ao comando. Algo como nohup scp file server:path/ & . Ele será executado em segundo plano e se você fechar o console, ele ainda transferirá o arquivo.

  2. Use sftp em vez de scp . Ele oferece resultados de desempenho muito melhores (especialmente para arquivos grandes). O SCP é muito lento. Mesmo sftp suporta o modo em lote: sftp -b <(echo "cd path"; echo "put file") server &

por Jakuje 15.11.2016 / 09:45