使用curl保存到临时文件并仅在成功时移动到位

使用curl保存到临时文件并仅在成功时移动到位

curl能够使用-o/--output开关将 URL 下载到特定文件。据我所知,这将保存该文件,如果下载发生问题,则该文件将仅下载一半。

我可以通过创建一个临时文件并将其移动到位来解决此问题:

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运行 iffcurl没有失败。

答案1

据我所知,curl没有这个内置的;你的方法已经尽善尽美了(与errexit)。无论设置如何,您都可以将其明确化:

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

相关内容