我需要复制一个 .war 文件,目前我只能通过 UI 使用“http://服务器:主机/目录/my_file.war“。所以它不存储在文件服务器上。我登录了服务器 A,文件需要保存在服务器 B 上。
通常是否可以使用 scp 命令从服务器 A 下载未存储在文件服务器上的文件到服务器 B?
提前致谢。
答案1
不,scp 不支持http:
。首先使用或将文件复制到您的计算机(curl
或wget
使用浏览器保存),然后使用 scp 从本地文件系统复制。
如果您在服务器 B 上有 shell 访问权限,只需 ssh 到服务器 B,然后wget
在那里运行以直接下载文件。这样做更好,因为它只使用服务器 B 和 Web 服务器上的带宽(如果您关心的话)——请参阅下面的替代解决方案,它使用更多的带宽。
或者,如果由于某种原因您无法将文件直接下载到服务器 B,请执行以下操作:
serverA$ wget --output-document=- http://server:host/directory/my_file.war | \
ssh user@serverB "cat > /path/to/my_file.war"
这告诉wget
您将 URL 提取到 stdout,然后ssh
将该数据发送到 serverB 并将其重定向到文件。不幸的是,scp
无法从 stdin 读取,因此您需要在 serverB 上具有 shell 访问权限才能使其工作。请注意,如果您这样做,您将在 serverA 上使用 2 倍带宽(从 web 服务器提取文件,然后将其推送到服务器 B),并且您将在 web 服务器和 serverB 上使用 1 倍带宽。