有没有一种简单的方法可以在两个 SSH/SFTP 服务器之间传输文件?完美的解决方案是 FileZilla,但它只允许您在本地和远程之间创建连接,而不是在远程和远程之间。
从理论上讲,我可以打开两个 Nautilus 窗口并连接到一些窗口,ssh://server1/path/to/folder
然后ssh://server2/path/to/folder
将文件从一侧拉到另一侧。我的经验是,这是非常不稳定的。传输大小总和为 ie 10MB 的文件是没有问题的,但是传输 ie 10GB 通常会导致 Nautilus 挂起并保留在那里需要ps -e | grep nautilus
-> kill -9 <pid>
。我还用 Nemo 和 Caja 测试了同样的东西。虽然 Nemo 往往比其他两个更稳定,但它仍然不完美,并且不时出现故障。FileZilla 非常稳定,从来没有真正破坏过它,但由于提到的事实是它只能连接到单个 SSH 服务器,因此它不是很灵活。
当然,我也可以使用 挂载文件夹sshfs
,但这是一种不方便的解决方案。要运行简单的传输,需要做太多的准备工作。
是否有任何应用程序可以处理两个 SSH 服务器之间的传输而不会中断?完美就像 FileZilla 一样,如果连接中断,它会重新开始工作。
如果您使用的 Ubuntu 版本仍然受支持,那么您的
scp
命令将提供开关,该开关可以通过localhost-3
将文件从remote1复制到remote2:您也可以省略该开关,但您将需要以下文件中的
-3
公钥 (id_rsa.pub
) :user1@remote1
authorized_keys
user2@remote2
scp
然后在引擎盖下先做一个ssh user1@remote1
,然后从那里开始scp /path/to/file1 user2@remote2:/path/to/file2
。这就是为什么证书的分发方式必须与-3
解决方案不同的原因。换句话说:
scp -3 remote1:file1 remote2:file2
将文件从 remote1传输到localhost,然后再传输回remote2。数据传输remote1 → localhost → remote2。在这种情况下,本地主机是第 3 方,因此-3
. 为此,您将需要remote1和remote2 上localhost的凭据,因为localhost连接到它们两者。scp remote1:file1 remote2:file2
以它们相互连接的速度将文件直接从 remote1复制到remote2 。localhost在这里不涉及(除了发出命令)。数据传输remote1 → remote2。为此,您将需要 仅在remote1上来自localhost的凭据,但此外,您还需要在remote2上获得remote1的凭据,因为localhost仅连接到remote1 ,然后remote1连接到remote2。如果可能,我会选择第二种方法。正如一些评论已经说过的那样:
通常remote1和remote2之间的网络电缆比它们和localhost之间的电缆粗得多。在大多数情况下,两台 ssh 服务器可以相互连接(或者至少一个可以连接到另一台),而且在大多数情况下,工作站的互联网也比其中任何一台服务器都差得多。
如果是这样,订购一台服务器转移到另一台服务器是可行的方法。
检查
nohup.out
server1 是否有错误。如果服务器可达性相反,您可以反转哪台机器是主机:
也许您可以使用几个 GUI 前端之一来进行 rsync:
是否有任何用于命令 rsync 的 GUI 应用程序?
或者您可以直接从命令行使用 rsync 连接到两个远程服务器:
“如何在两个遥控器之间同步文件”
我经常使用 ssh 登录到一台服务器,然后从该服务器的命令行使用 rsync 将文件推送或拉取到另一台远程服务器——这通常比尝试通过第三台计算机传输文件要快得多。
rsync 足够聪明,可以做一些工作,然后如果出现任何问题并中断进程,它可以稍后从中断的地方恢复。
您需要使用 SCP 协议。
scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save