使用 scp 复制文件,该文件未存储在文件系统中

use*_*413 0 linux shell scp

我需要复制一个 .war 文件,我目前只能通过“ http://server:host/directory/my_file.war ”访问 UI 。所以它没有存储在文件服务器上。我登录到服务器 A 并且文件需要保存在服务器 B 上。

通常是否可以使用 scp 命令从服务器 A 下载未存储在文件服务器上的文件到服务器 B?

提前致谢。

bst*_*rre 5

不,scp 不支持http:. 首先使用curlwget(或使用浏览器保存)将文件复制到您的计算机,然后使用 scp 从本地文件系统复制。

如果您在服务器 B 上有 shell 访问权限,只需 ssh 到服务器 B,然后在wget那里运行以直接拉取文件。这更好,因为它只使用 serverB 和 web 服务器上的带宽(如果这对您很重要) - 请参阅下面的替代解决方案,该解决方案使用更多带宽。

或者,如果由于某种原因您无法将文件直接下载到服务器 B,请执行以下操作:

serverA$ wget --output-document=- http://server:host/directory/my_file.war | \
    ssh user@serverB "cat > /path/to/my_file.war"
Run Code Online (Sandbox Code Playgroud)

这告诉wget将 URL 获取到 stdout,然后ssh将该数据发送到 serverB 并将其重定向到一个文件。不幸的是,scp无法从 stdin 读取 a,因此您需要在 serverB 上访问 shell 才能使其正常工作。请注意,如果您这样做,您将在服务器 A 上使用 2 倍带宽(从网络服务器拉取文件,然后将其推送到服务器 B),并且您将在网络服务器和服务器 B 上使用 1 倍带宽。