Curl
使用 curl 保存到臨時文件並僅在成功時移動到位
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