Existe uma maneira fácil de transferir arquivos entre dois servidores SSH / SFTP? A solução perfeita seria o FileZilla, mas apenas permite criar uma conexão entre local e remoto, mas não entre remoto e remoto.
Teoricamente eu poderia abrir duas janelas do Nautilus e se conectar a alguns ssh://server1/path/to/folder
e ssh://server2/path/to/folder
em seguida, basta puxar os arquivos de um para o outro lado. Minha experiência é que isso é muito instável. A transmissão de arquivos com uma soma de tamanho de 10 MB, ou seja, não é problema, mas a transferência de 10 GB geralmente resultava no Nautilus desligando-se e permanecendo lá na necessidade de ps -e | grep nautilus
-> kill -9 <pid>
. Eu também testei a mesma coisa com Nemo e Caja. Enquanto Nemo tende a ser mais estável do que os outros dois, ainda não é perfeito e também quebra de tempos em tempos. O FileZilla é extremamente estável, nunca conseguiu quebrar, mas não é muito flexível devido ao fato mencionado de que ele pode se conectar apenas a um único servidor SSH.
É claro que eu também poderia montar uma pasta sshfs
, mas essa é uma solução inconveniente. Muito trabalho prévio a fazer para obter uma transferência simples em execução.
Existe algum aplicativo que possa manipular transferências entre dois servidores SSH sem interromper? Perfeito seria algo como o FileZilla, que retoma o trabalho se a conexão for interrompida.
Respostas:
Se você estiver em uma versão do Ubuntu que ainda é suportada, seu
scp
comando fornecerá a-3
opção que permite copiar arquivos de remote1 para remote2 via localhost :Você também pode omitir a
-3
opção, mas precisará da chave pública (id_rsa.pub
) deuser1@remote1
no arquivoauthorized_keys
deuser2@remote2
:scp
então sob o capô faz umssh user1@remote1
primeiro e de láscp /path/to/file1 user2@remote2:/path/to/file2
. É por isso que a credencial deve ser distribuída diferente da-3
solução.Em outras palavras:
scp -3 remote1:file1 remote2:file2
transfere o arquivo de remote1 para localhost e depois volta para remote2 . Os dados trafegam como remoto1 → localhost → remoto2 . O host local é o terceiro neste cenário, portanto-3
. Para que isso funcione, você precisará das credenciais do localhost em remote1 e remote2 porque o localhost se conecta a ambos.scp remote1:file1 remote2:file2
copia o arquivo diretamente de remote1 para remote2 na velocidade com a qual eles estão conectados um ao outro. localhost não está envolvido aqui (além de emitir o comando). Os dados trafegam remoto1 → remoto2 . Para que isso funcione, você precisará das credenciais do localhost apenas no remote1, mas adicionalmente precisará das credenciais do remote1 no remote2 porque o localhost se conecta apenas ao remote1 e depois o remote1 se conecta ao remote2 .Se possível, eu escolheria a segunda abordagem. Como alguns comentários já dizem:
geralmente,o cabo de rede entre remote1 e remote2 é muito mais grosso que o cabo entre eles e o host local .fonte
-3
.Na maioria dos casos, dois servidores ssh podem alcançar um ao outro (ou pelo menos um pode alcançar o outro) e, novamente, na maioria dos casos, a Internet da estação de trabalho é muito pior do que qualquer um dos servidores.
Nesse caso, solicitar um servidor para transferir para o outro é o caminho a seguir.
Verifique
nohup.out
no servidor1 se há erros.Se a acessibilidade do servidor for inversa, você poderá reverter qual máquina é a principal:
fonte
Talvez você possa usar um dos vários front-ends da GUI para rsync:
Existe algum aplicativo GUI para o comando rsync?
Ou talvez você possa usar o rsync diretamente da linha de comando para se conectar aos dois servidores remotos:
"Como rsync arquivos entre dois controles remotos"
Costumo fazer logon em um servidor com ssh e, a partir da linha de comando do servidor, uso o rsync para enviar ou enviar arquivos para outro servidor remoto - isso geralmente é muito mais rápido do que tentar transferir os arquivos por outro terceiro computador.
O rsync é inteligente o suficiente para fazer algum trabalho; então, se algo der errado e interromper o processo, ele poderá continuar mais tarde exatamente de onde parou.
fonte
Você precisa usar o protocolo SCP.
scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save
fonte