我想通过SCP和2个不同的.pem键将文件夹从服务器A转移到服务器B。
这是最好的方法,这实际上会起作用。
scp -i ~/Documents/server1.pem -r root@server1.com:~/location/to/dir -i ~/Documents/server2.pem ~/location/to/copy/to
或我必须输入:
scp -i ~/Documents/server1.pem -r root@server1.com:~/location/to/dir -i ~/Documents/server2.pem root@server2.com:~/location/to/copy/to
如果我需要输入主机或位置,我只是不确定第二个位置。非常感谢您的帮助。
创建一个配置文件,例如 ~/scp_config
:
Host src
HostName server1.com
User root
CertificateFile %d/Documents/server1.pem
Host dest
HostName server2.com
User root
CertificateFile %d/Documents/server2.pem
然后运行
scp -3 -F ~/scp_config src:~/location/to/dir dest:~/location/to/copy/to
首先, scp
只能接受一个 -i
选项,因此您的命令都无法正常工作。
接下来,您没有使用-3
选项。这意味着传输将直接发生在server1和server2之间,而无需通过机器。在这种情况下,这将是在Server1上,需要存储Server2的证书。
这里已经提供了一种解决方案。如果Server1无法直接连接到Server2,请参见此处的-3
选项。
另一个解决方案是使用两个ssh
进程,每个进程都有自己的-i
选项。类似:
ssh -i ~/Documents/server1.pem root@server1.com 'tar cz -C ~/location/to/dir .'
| ssh -i ~/Documents/server2.pem root@server2.com 'tar xz -C ~/location/to/copy/to'
注意:
- 这样,文件通过您自己的计算机,例如
scp
的-3
选项 - 您可能要先创建目标目录(在
tar x
之前添加mkdir -p
命令) - 您可能需要在
tar x
命令中使用--no-same-owner
将文件归于root,而不是由其原始所有者