有没有一种简单的方法可以在两个SSH / SFTP服务器之间传输文件?完美的解决方案是FileZilla,但它只能让您在本地和远程之间创建连接,而不能在远程和远程之间创建连接。
从理论上讲,我可以打开两个Nautilus窗口并连接到一些ssh://server1/path/to/folder
和ssh://server2/path/to/folder
,然后就从一个拉文件到另一侧。我的经验是,这非常不稳定。传输大小为10MB的文件是没有问题的,但是传输10GB的文件通常会导致Nautilus挂起并保持那里ps -e | grep nautilus
->的位置kill -9 <pid>
。我也与Nemo和Caja测试了同样的东西。尽管Nemo往往比其他两个更稳定,但它仍然不是完美的,并且会不时中断。FileZilla非常稳定,从来没有真正破坏过它,但是由于提到它只能连接到一个SSH服务器这一事实,因此它不是非常灵活。
当然,我也可以使用安装一个文件夹sshfs
,但这是一种不方便的解决方案。要进行简单的传输,需要做大量的准备工作。
是否有任何应用程序可以处理两个SSH服务器之间的传输而不会中断?就像FileZilla一样,Perfect可以在连接中断的情况下再次执行任务。
如果您使用的是仍受支持的Ubuntu版本,那么您的scp
命令将提供-3
启用该开关的开关,该开关可通过localhost将文件从remote1复制到remote2:
me@local:~> scp -3 user1@remote1:/path/to/file1 user2@remote2:/path/to/file2
您也可以省略此-3
开关,但是您将需要以下文件中的公钥(id_rsa.pub
):user1@remote1
authorized_keys
user2@remote2
me@local:~> scp user1@remote1:/path/to/file1 user2@remote2:/path/to/file2
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
。为此,您将需要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之间的网络电缆要粗得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句