使用wget下载文件
# wget下载单个文件 wget https://xxx.com/static/v1.mp4
- 使用shell 脚本在一个命令中下载多个文件
#!/bin/bash while read file; do wget ${file} done < demo.txt
demo.txt 包含所有必须下载的文件,每个文件都有自己的一行
https://xxx.com/static/v1.mp4 https://xxx.com/static/v2.mp4 https://xxx.com/static/v3.mp4
这种方法还是串行的下载文件,并不能节省下载时间。还可以通过并行下载文件来加快速度。
使用 wget并行下载
- Bash 方法
使用& 将wget进程发送到后台
#!/bin/bash while read file; do wget ${file} & done < demo.txt
对wget每次调用都被派生到后台并在其自己单独的子 shell 中异步运行。
尽管在并行下载文件,但这种方法不能反馈出错的信息。
- wget Fork
使用-b参数,让wget将自己Fork到后台
#!/bin/bash while read file; do wget ${file} -b done < demo.txt
就像&运算符一样,每个调用都被派生到后台并异步运行。但不同的是-b参数还提供了每次下载的日志文件。
可以grep这些日志文件来检查没有发生错误
- 使用xargs
优雅的解决方案就是使用xargs,可以设置同时运行的最大进程数
#!/bin/bash cat rumenz.txt | xargs -n 1 -P 2 wget -q
使用-q静默方式。如果不设置xargs会将所有进程的输出重定向到 stdout,会输出很多信息。如果没有发生错误,它将以 0 值退出,否则以 1 值退出。