Curl

使用 curl 保存到臨時文件並僅在成功時移動到位

  • June 19, 2020

curl``-o可以使用/--output開關下載特定文件的 URL 。AFAIk 這將保存此文件,如果下載發生問題,則該文件將僅下載一半。

我可以通過創建一個臨時文件並將其移動到位來解決這個問題:

TEMP=$(mktemp -p /data/path/to/results/ tmp.results.zip.XXXXXX)
curl -o ${TEMP} https://example.com/files/results.zip
mv ${TEMP} /data/path/to/results/results.zip

我可以只用 curl 在一個命令中完成這一切嗎?curl 是否有“保存到臨時文件並僅在成功後才移動”的選項?

*更新:*我經常使用set -o errexit,所以如果 curl 命令失敗,腳本就會失敗。如果沒有失敗就mv執行。curl

據我所知,curl沒有這個內置的;你的方法和它一樣好(使用errexit)。無論設置如何,您都可以使用

curl -o ${TEMP} https://example.com/files/results.zip &&
mv ${TEMP} /data/path/to/results/results.zip

引用自:https://unix.stackexchange.com/questions/593780