使用 curl 上传大文件,无需 RAM 缓存。

使用 curl 上传大文件,无需 RAM 缓存。

我正在使用 curl 将大文件(从 5 到 20Gb)上传到基于HDFS(Hadoop Cluster)如下:

curl -f --data-binary "@$file" "$HOOP_HOST$UPLOAD_PATH?user.name=$HOOP_USER&op=create"

但是当 curl 上传大型文件时,它会尝试将其完全缓存在 RAM 中,这会产生高内存负载。我尝试使用应该禁用缓冲-N的标志man curl。但什么也没发生。所以我的问题是,有没有办法强制 curl 直接写入套接字,或者您能否建议我另一个可以满足我对简单 HTTP POST/PUT 请求的需求的实用程序。

我不想自己写它,因为它看起来就像发明一辆自行车。谢谢。

答案1

遗憾的是,据 Daniel Stenberg 称,目前还不可能实现。

https://github.com/bagder/curl/issues/290

答案2

cat myfile.csv | curl -X PUT -T - -H 'content-type:text/csv' http://localhost

确实有效。

相关内容