Como copiar arquivos grandes em outro servidor Linux independente do TTY

1

Na verdade, eu estava tentando copiar todos os arquivos em outro diretor. O tamanho total do arquivo é de 188 GB, então vai demorar um pouco.

Estou tentando copiar para o servidor Linux A para B usando este comando

nohup scp Files-from-Server-A [email protected]:tmp &

mas assim que eu fecho o terminal, ele pára de copiar os arquivos, mas o processo ainda é mostrado no gerenciador de processos.

    
por OmiPenguin 12.02.2013 / 14:41

4 respostas

3

scp detecta se tem um controle tty. Se você executá-lo como um processo em primeiro plano, ele mostrará uma barra de progresso, mas, se você fizer o plano de fundo, a barra de progresso desaparecerá, portanto, há algumas verificações internas em andamento. Eu faria como @peterph diz e começaria a transferência em uma sessão tmux ou screen . Não tenho certeza das implicações de usar nohup , mas apenas manter um terminal de controle ativo.

Como o arquivo é muito grande, se não estiver compactado, adicionarei também a compactação à transferência com a opção scp -C .

Se for um diretório, e você estiver repetindo o mesmo comando com bastante frequência, provavelmente deverá usar o rsync, que primeiro verifica se os arquivos diferem (com somas de verificação md5) antes de transferi-los. Você também pode retomar transferências de arquivos grandes com a opção --partial .

rsync -avz --partial --progress --rsh=ssh Files-from-Server-A [...] user@B:/tmp/
    
por 12.02.2013 / 14:55
5

Aconselhamento geral é usar o multiplexador de terminal (por exemplo, tmux ou screen ) e executar a cópia dentro, uma vez que isso dá muita flexibilidade. Você pode separar / reconectar conforme necessário para verificar como a operação continua.

Estes programas criam terminais "virtuais" (headless) que são exibidos na entrada de um terminal "real" (console linux, emuladores de terminal X, conexão ssh ...). Como o terminal virtual não é afetado por interrupções nos terminais reais (o multiplexador de terminal simplesmente pára de exibir a saída quando detecta que o dispositivo IO está sendo fechado e armazena a saída em seu buffer interno), os aplicativos em execução são protegidos contra SIGHUP. Como bônus, eles geralmente oferecem pelo menos alguns recursos básicos de janelas com modificação de texto.

Não tenho certeza sobre tmux (que é desenvolvido ativamente), mas GNU screen deve ser incluído no repositório padrão do RHEL.

    
por 12.02.2013 / 14:48
1

lftp (um programa de transferência de terminal de uso geral) suporta sftp (não scp , mas se você tiver scp , você tem ssh e provavelmente também suporta sftp ), e pode colocar transferências em segundo plano, reconectar automaticamente e retomar a transferência (após um atraso personalizável) em caso de falha e assim por diante.

    
por 12.02.2013 / 15:24
0

Você não pode usar rsync ? Uma transferência tão grande certamente irá se quebrar em algum lugar, e eu não tenho certeza se os mecanismos propostos são capazes de continuar de onde ela se rompeu.

    
por 13.02.2013 / 06:17

Tags