我想curl
下载链接,但我想它跳过已经存在的文件。 现在,我的代码行会继续覆盖它没有什么母校:
curl '$url' -o /home/$outputfile &>/dev/null &
这可怎么实现的?
我想curl
下载链接,但我想它跳过已经存在的文件。 现在,我的代码行会继续覆盖它没有什么母校:
curl '$url' -o /home/$outputfile &>/dev/null &
这可怎么实现的?
你可以只是把你的电话到curl
的内侧if
块:
if ! [ -f /home/$outputfile ]; then
curl -o /home/$outputfile "url"
fi
另外请注意,在你的榜样,你有$url
单引号,你想要什么,不会做里面。 相比:
echo '$HOME'
至:
echo "$HOME"
此外, curl
具有--silent
选项,可以在脚本中非常有用。
使用wget与--no-clobber
来代替:
-nc
,--no-clobber
:跳过下载将下载到现有文件。
例:
wget -nc -q -O "/home/$outputfile" "$url"
您可以使用卷曲选项-C -
此选项是用来恢复被中断下载,但会跳过下载该文件是否已经完成。 需要注意的是参数-C
是一个破折号。 缺点可能是卷曲还是短暂接触远程服务器要求的文件大小。
该curl
可以支持跳过的文件,当您与使用-O
和-J
,但其行为是不一致的。
该-J
( --remote-header-name
)基本上告诉-O
( --remote-name
使用服务器指定)选项Content-Disposition
,而不是提取的URL文件名文件名。 在这样的curl
并不真正知道服务器会返回一个文件名,所以可以忽略安全措施的现有文件。
来源: 回复:-J“拒绝覆盖......”
例如:
$ curl -LJO -H 'Accept: application/octet-stream' 'https://api.github.com/repos/x/y/releases/assets/12345
Warning: Refusing to overwrite my_file.bin: File
Warning: exists
curl: (23) Failed writing body (0 != 16384)
然而,由于已经提到的,其行为是不可预测的,它不适合所有文件。