Загрузить большие файлы с 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 ответа
К сожалению, по словам Даниэля Стенберга, в настоящее время это невозможно.
cat myfile.csv | curl -X PUT -T - -H 'content-type:text/csv' http://localhost
на самом деле работает.