我有一个多服务器设置。想象一个客户端、一个运行 Rails 的 Web 服务器和一个存储数据的实例。我需要一种通过网络服务器从客户端访问数据存储文件的方法。
目前我正在使用 scp 将文件下载到临时目录中的 Web 服务器,然后将客户端重定向到 tmp url。
我更希望能够通过 Web 服务器流式传输文件而不存储它们。
关于如何做到这一点的任何建议?
我有一个多服务器设置。想象一个客户端、一个运行 Rails 的 Web 服务器和一个存储数据的实例。我需要一种通过网络服务器从客户端访问数据存储文件的方法。
目前我正在使用 scp 将文件下载到临时目录中的 Web 服务器,然后将客户端重定向到 tmp url。
我更希望能够通过 Web 服务器流式传输文件而不存储它们。
关于如何做到这一点的任何建议?
一种替代方法是使用 sshfs 并挂载远程服务器(只读)
sshfs -o ro server:/path/to/files path/on/webserver/to/mount
http://www.howtogeek.com/howto/ubuntu/how-to-mount-a-remote-folder-using-ssh-on-ubuntu/
在通过您的问题进行流式传输方面:
你可以这样做:
data = `ssh server 'cat path/to/file/on/server'`
send_data(data)
http://apidock.com/rails/ActionController/Streaming/send_data
这里的技巧是使用 ssh 而不是 scp,从你的 shell 中尝试一下
ssh server 'cat path/to/file' > local_file
这允许您在本地将文件发送到 STDOUT(不能通过 scp 完成。)
这允许您流式传输文件,但我不建议这样做。