假设我们有三台机器:A、B 和 C。
- 机器 A 无法从任何网络访问机器 B,因此我无法在两者之间发送文件。
- 但从C(我的机器)可以到达A和B。
今天我要把一个大文件从A复制到B。
目前,我需要先将其从 A 复制到 C,然后从 C 复制到 B。有没有办法连接或通过管道scp
将传入数据流式传输到目标计算机,而无需在中间保存?
答案1
man scp
写道(我强调)
-3
两个远程主机之间传输副本通过本地主机。如果没有此选项,数据将直接在两个远程主机之间复制。 [...]
因此,您需要的是一个通过本地系统路由的复制命令(我几乎总是包含-p
, 以保留时间戳和权限,所以我在这里也这样做了):
scp -3p serverA:path/to/file(s) serverB:/path/to/destination
最新版本scp
有-3
默认启用自 2021 年 8 月 9 日起,要禁用它,现在必须指定-R
.使用此第三方复制功能将禁用输入口令和密码的提示,因为scp
无法向两台主机询问它们。
答案2
scp user1@A:from_file user2@B:to_file
应该可以解决问题。读man scp
。