wget命令–文件下载
#wget命令 wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。
语法格式: wget [参数]
常用参数:
描述
-V –-version
显示wget的版本后退出
-h –-help
打印语法帮助
-b –-background
启动后转入后台执行
-e –-execute=COMMAND
-O
对下载的文件指定名称
-c
断点续传
-o
将信息输出到指定文件
参考实例
使用wget下载单个文件:
wget http://www.Linuxcool.com/testfile.zip下载并以不同的文件名保存:
wget -O test.zip http://www.Linuxcool.comwget限速下载:
wget --limit-rate=300k http://www.linuxcool.com/test.zip使用wget断点续传:
wget -c http://www.linuxcool.com/test.zip使用wget后台下载:
wget -b http://www.linuxcool.com/test.zip
Continuing in background, pid 1840.
Output will be written to `wget-log'.下载整站
wget --mirror --convert-links www.qq.com
wget --mirror --convert-links www.baidu.com
wget -m -k -p www.qq.com利用wget批量下载文件
需求:有几万、甚至几十万个链接需要下载 思路:将所有需要下载的链接放在文本中,一行一个下载链接,然后将文件分割成多个文件一起下载
#!/bin/bash
A=downloads1.txt #存放需要下载的url的文件名
B=test-file_ #生成的临时URL列表文件名前缀,可以不用管
rm -rf download/*
start=`date "+%s"` #开始时间
a=`cat $A | wc -l` #统计需要下载url的行数
b=`expr $a / 20 + 1` #计算将文件分成20个,每个文件的行数,这里设置的是计划分成20个文件,+1是防止出现奇数
split -l $b $A -d -a 2 $B #将需要下载的URL文件按上一条命令计算出的数量进行分割,并命名为$B+数字。
ls | grep $B > link.txt #将所有分割后的文字名记录到link.txt文本,
for line1 in `cat link.txt` #依次读取link.txt文件中的每一行,即分割成20份的文件名;
do
cat $line1 |while read line #依次列出分割成20份的文件中的URL
do xargs wget -q -c $line -P download #将上一条命令列出的URL传给wget进行下载,并放至指定目录xia
done & #默认是每个文件中的URL下载完之后再下载下一个,直到全部完成。为了加快速度,用&将命令放至后台,立即执行下一个循环,直到将20个文件读取完。
done
wait #前面的命令因为放在了后台,通过wait等待前面的所有命令执行完再执行后面的命令。
rm -rf link.txt $B* #删除之前生成的临时文件
end=`date "+%s"` #记录结束时间
echo "TIME: `expr $end - $start`" #打印总共用时,单位是秒或直接放在一个文件进行逐行下载
url_file=urls.txt
for url in "${url_file}"
do
wget -P /save_path/ "${url}"
done
与该功能相关的Linux命令:
最后更新于