使用 SSH 将文件从远程计算机传输到本地计算机

使用 SSH 将文件从远程计算机传输到本地计算机

我在 Amazon EC2 上托管了一个 Ubuntu 服务器。我需要创建一个自动备份方案,因此我在本地网络上创建了另一个托管在虚拟环境中的 Ubuntu 实例。

我设法使用 rsync 命令在同一网络上的两台机器之间传输必要的文件:

rsync -azvv -e ssh /home/path/folder1/ [email protected]:/home/path/folder2

我如何做同样的事情,但将文件从我的亚马逊服务器传输到我的本地服务器? 有没有办法通过端口转发、VPN 或其他方式实现这一点?

不一定非要使用 rsync。如果您知道更好的方法,请告诉我。

答案1

只需交换两个位置:

rsync PARAMETER REMOTE LOCAL

因此,对于您来说,可以执行以下操作:

rsync -azvv -e ssh [email protected]:/home/path/folder2 /home/path/folder1/

答案2

所以您想在本地服务器和亚马逊托管服务器之间设置自动备份?

  1. 配置本地服务器和亚马逊服务器之间的 ssh 密钥。

    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
    

    您应该能够从本地服务器 ssh 到远程服务器而无需密码。确保 .ssh 目录和 authorized_keys 文件的权限分别为 700 和 600。

  2. 从本地服务器运行 rsync 命令

    foo@local-server $ rsync -azvv amazon-server:folder2 ~/folder1/
    
  3. 你可能希望将其设置为从本地服务器运行的 cronjob

    foo@local-server $ crontab -e
    

    将类似以下内容添加到您的 crontab。这将在每晚午夜运行备份。

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

相关内容