从远程服务器到另一个远程服务器的SCP
我有一个服务器“B”,它可以将SCP文件传入/传出服务器“A”,也可以将SCP文件传入/传出服务器“C”。从远程服务器到另一个远程服务器的SCP
即 甲< ----->乙< ----->Ç
服务器 “A” 和服务器 “C” 不能达到彼此。只有服务器B可以同时到达。 我想将文件从A传输到C,而不在服务器B上存储(或最小)存储。
有没有将文件从A文件传输到C文件而无需将文件存储在B文件或最小步骤的方法?
谢谢。
,如果你喜欢,你可以做到这一点没有SCP。登录到机器“B”和运行这个:
ssh [email protected] 'cat /source/file' | ssh [email protected] 'cat > /dest/file'
您应该建立一个或两个ssh的实例,为login的关键,让你不通过在两个SSH实例提示输入密码同时。
如果你想在文件拷贝过程中要多一点错误校对,或者如果你想一次传输多个文件,你可以使用tar
:
ssh [email protected] 'cd /source/dir && tar cf - file1 file2...' |
ssh [email protected] 'cd /dest/dir && tar xvf -'
如果你愿意而运行从A命令,那么这样的事情应该工作:
tar cf - file... | ssh [email protected] 'ssh [email protected] "cd /dest/dir && tar xvf -" '
你可以用隧道做到这一点:
# Open a tunnel to server C
$ ssh -L 2222:<server C>:22 -N -l user <server B> &
# Copy the file to server C
$ scp <file> -P 2222 localhost:<remote filename>
注意,隧道步骤2
后仍在运行从scp(1)
:
说明
...两台远程主机 之间的副本也是允许的。
scp host1:foo.txt host2:foo.txt
试过这个,但我认为我们的服务器有一些配置停止它。 – Steven 2014-09-25 05:57:13
您可能正在运行不支持它的旧版本。 – 2014-09-25 05:58:16
题外话,但在这里你去:http://blog.sensible.io/2014/05/17/ssh-tunnel-local-和远程端口转发解释与examples.html – 2014-09-24 00:19:37