Загрузить большие файлы с curl без кеш-памяти.

Я использую curl для загрузки больших файлов (от 5 до 20 Гб) в HOOP на основе HDFS (Hadoop Cluster) следующим образом:

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

Но при загрузке больших файлов он пытается полностью кэшировать его в ОЗУ, что приводит к высокой загрузке памяти. Я пытался использовать -N флаг от man curl который должен отключить буферизацию. Но ничего не случилось. Поэтому мой вопрос заключается в том, существует ли какой-либо способ принудительной записи curl непосредственно в сокет, или вы могли бы посоветовать мне другую утилиту, которая покроет мои потребности в простых запросах HTTP POST/PUT.

Я не хочу писать это сам, так как это все равно, что изобретать велосипед все время. Спасибо.

2 ответа

Решение

К сожалению, по словам Даниэля Стенберга, в настоящее время это невозможно.

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

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

на самом деле работает.

Другие вопросы по тегам