Questão Transferir arquivos da máquina remota para a local usando o SSH


Eu tenho um servidor Ubuntu hospedado no Amazon EC2. Eu preciso criar um esquema de backup automatizado, então eu criei outra instância do Ubuntu na minha rede local que está hospedada em um ambiente virtual.

Eu consegui transferir os arquivos necessários entre duas máquinas na mesma rede usando o comando rsync:

rsync -azvv -e ssh /home/path/folder1/ remoteuser@remotehost.remotedomain:/home/path/folder2

Como posso fazer a mesma coisa, mas transferir arquivos do meu servidor Amazon para o meu servidor local? Existe uma maneira que eu possa conseguir isso com o encaminhamento de porta, ou por VPN, ou qualquer outra coisa?

Não precisa ser rsync. Se você souber sobre um método melhor, por favor me avise.


1


origem




Respostas:


Apenas troque os dois locais:

rsync PARAMETER REMOTE LOCAL

Portanto, no seu caso, o seguinte deve fazer o trabalho:

rsync -azvv -e ssh remoteuser@remotehost.remotedomain:/home/path/folder2 /home/path/folder1/

1



Então você está dizendo que eu deveria ligar do meu terminal de máquina local para minha máquina remota? Faz sentido. A questão é que minha máquina local usa autenticação de senha enquanto o remoto usa a chave pública. Portanto, quando eu conecto a partir da minha máquina local, ele pede a senha da máquina remota, o que não tem. Como posso ignorar isso? - seedg
De acordo com o seu comando rsync [...] remoteuser@remotehost.remotedomain:[...] você deve ser capaz de se conectar remotehost via ssh !? Meu comando apenas se conecta com a mesma conta no mesmo host, então por que deveria falhar? Por favor, execute os dois comandos da mesma máquina. Se você não estiver conectando-se explicitamente à sua máquina local, não precisará da senha do host local. - binfalse
O que fiz foi adicionar meu código de chave pública do servidor amazon ao authorized_hosts do servidor local e não há necessidade de senha - seedg


Então você quer configurar um backup automatizado entre seu servidor local e um servidor hospedado na Amazon?

  1. Configure as chaves ssh entre seu servidor local e seu servidor amazon.

    foo@local-server $ ssh-keygen
    foo@local-server $ scp ~/.ssh/id_rsa.pub amazon-server:~/id_rsa.pub
    foo@amazon-server $ cat ~/id_rsa.pub >> .ssh/authorized_keys
    

    Você deve conseguir ssh do servidor local para o servidor remoto sem precisar de uma senha. Certifique-se de que as permissões no diretório .ssh e no arquivo authorized_keys sejam 700 e 600, respectivamente.

  2. Execute seu comando rsync do seu servidor local

    foo@local-server $ rsync -azvv amazon-server:folder2 ~/folder1/
    
  3. Você provavelmente vai querer configurá-lo como um cronjob rodando a partir do seu servidor local

    foo@local-server $ crontab -e
    

    Adicione algo como o seguinte ao seu crontab. Isso executará o backup à meia-noite todas as noites.

    * 0 * * *  rsync -azvv amazon-server:folder2 ~/folder1/
    

0



dê uma olhada no ssh-copy-id para fazer a cópia das chaves ssh. - Johan
Isso é exatamente o que eu fiz. - seedg