加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何使用curl从一个服务器流式传输文件到另一个服务器(

发布时间:2020-12-14 01:41:08 所属栏目:Linux 来源:网络整理
导读:我的API服务器具有非常有限的磁盘空间(500MB)和内存(1GB).它获得的API调用之一是接收文件.消费者调用API并传递要下载的URL. 我的服务器的“目标”是将此文件上传到Amazon S3.不幸的是,我不能要求消费者将文件直接上传到S3(部分要求). 问题是,有时这些是巨大
我的API服务器具有非常有限的磁盘空间(500MB)和内存(1GB).它获得的API调用之一是接收文件.消费者调用API并传递要下载的URL.

我的服务器的“目标”是将此文件上传到Amazon S3.不幸的是,我不能要求消费者将文件直接上传到S3(部分要求).

问题是,有时这些是巨大的文件(10GB)并将它们保存到磁盘然后上传到S3不是一个选项(500MB磁盘空间限制).

我的问题是,如何使用curl Linux程序将文件从输入URL“管道”到S3?

注意:我能够以不同的方式管道它,但是,它首先尝试下载整个文件并失败,或者我遇到内存错误和卷曲退出.我的猜测是下载比上传要快得多,因此当我获得10GB文件时,管道缓冲区/内存会增长并爆炸(服务器上的内存为1GB).

有没有办法实现我正在尝试使用卷曲和滚边?

谢谢,
? – 杰克

解决方法

另一个SO用户询问了关于stdin卷曲帖子的类似问题.见 use pipe for curl data.

一旦您能够从第一个curl进程的标准输出的输出发布上传流,如果由于下载速度超过上载速度而内存不足,请查看mbuffer实用程序.我自己没有使用它,但它似乎是针对这类问题而设计的.

最后,如果所有其他方法都失败了,我想你可以使用curl的–limit-rate选项将上传和下载的传输速率锁定为一些相同且可持续的值.这可能未充分利用带宽,并且无法通过多个并行下载/上传流进行良好扩展,但对于某些一次性批处理流程,它可能已经足够好了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读