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.com

wget限速下载:

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命令:

最后更新于