使用 scp 复制未存储在文件系统上的文件

使用 scp 复制未存储在文件系统上的文件

我需要复制一个 .war 文件,目前我只能通过 UI 使用“http://服务器:主机/目录/my_file.war“。所以它不存储在文件服务器上。我登录了服务器 A,文件需要保存在服务器 B 上。

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

提前致谢。

答案1

不,scp 不支持http:。首先使用或将文件复制到您的计算机(curlwget使用浏览器保存),然后使用 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 倍带宽。

相关内容