保护下载限制
许多互联网服务提供商对宽带使用设置下载限制,特别是对于居住在城市以外的人。
我们可能需要添加配额,以免超过下载限制。
我们可以通过以下方式做到这一点:
wget -q 100m -i /path/to/inputfile
-q 命令不适用于单个文件。
如果我们下载大小为 2 GB 的文件,使用 -q 1000m 不会阻止文件下载。
配额仅在从站点递归下载或者使用输入文件时应用。
wget 命令的特点
我们可以使用 wget 下载整个网站并将链接转换为指向本地资源,以便我们可以离线查看网站。
wget 实用程序还会在连接断开时重试下载,并在可能的情况下在连接返回时从断开的位置恢复。
wget 的其他特性如下:
- 使用 HTTP、HTTPS 和 FTP 下载文件。
- 恢复下载。
- 将下载的网页中的绝对链接转换为相对 URL,以便可以离线查看网站。
- 支持 HTTP 代理和 cookie。
- 支持持久的 HTTP 连接。
- 即使我们未登录,它也可以在后台运行。
- 适用于 Linux 和 Windows。
传递安全信息
某些站点要求我们登录才能访问要下载的内容。
使用以下开关指定用户名和密码。
wget --user=yourusername --password=yourpassword
在多用户系统上,当有人运行 ps 命令时,他们可以看到用户名和密码。
重试选项
如果我们在输入文件中设置要下载的文件队列,并且让计算机运行以下载文件,则输入文件可能会在我们离开时卡住并重新尝试下载内容。
我们可以使用以下开关指定重试次数:
wget -t 10 -i /path/to/inputfile
将上述命令与 -T 开关结合使用以指定以秒为单位的超时时间,如下所示:
wget -t 10 -T 10 -i /path/to/inputfile
上述命令将重试 10 次,并为每个文件链接连接 10 秒。
当我们在慢速宽带连接上下载 75% 的 4 GB 文件时,仅会导致连接断开,这也很不方便。
要使用 wget 从停止下载的位置重试,请使用以下命令:
wget -c www.myfileserver.com/file1.zip
如果我们敲打服务器,主机可能不喜欢它,并且可能会阻止或者终止请求。
我们可以指定等待时间来指定每次检索之间等待的时间,如下所示:
wget -w 60 -i /path/to/inputfile
上述命令在每次下载之间等待 60 秒。
如果我们从一个源下载许多文件,这将非常有用。
一些网络主机可能会发现频率并阻止我们。
我们可以将等待时间设置为随机,使其看起来好像我们没有使用程序,如下所示:
wget --random-wait -i /path/to/inputfile
如何下载某些文件类型
如果要从站点递归下载,但只想下载特定文件类型(例如 MP3)或者图像(例如 PNG),请使用以下语法:
wget -A "*.mp3" -r
与此相反的是忽略某些文件。
也许我们不想下载可执行文件。
在这种情况下,请使用以下语法:
wget -R "*.exe" -r
运行 wget 作为后台命令
我们可以让 wget 作为后台命令运行,这样我们就可以在下载文件时在终端窗口中继续工作。
使用以下命令:
wget -b www.onitroad.com
我们可以组合开关。
要在镜像站点时在后台运行 wget 命令,请使用以下命令:
wget -b -m www.onitroad.com
我们可以进一步简化,如下所示:
wget -bm www.onitroad.com
cliget
有一个名为 cliget 的 Firefox 添加组件。
要将其添加到 Firefox:
- 访问 https://addons.mozilla.org/en-US/firefox/addon/cliget/ 并单击添加到 Firefox 按钮。
- 单击出现的安装按钮,然后重新启动 Firefox。
- 要使用 cliget,请访问我们要下载的页面或者文件并右键单击。出现一个名为 cliget 的上下文菜单,并且有复制到 wget 和复制到 curl 的选项。
- 单击复制到 wget 选项,打开终端窗口,然后右键单击并选择 paste 。适当的 wget 命令被粘贴到窗口中。
这使我们不必自己键入命令。
从多个站点下载
我们可以设置一个输入文件以从许多不同的站点下载。
使用我们喜欢的编辑器或者 cat 命令打开文件,并在文件的每一行列出要下载的站点或者链接。
保存文件,然后运行以下 wget 命令:
wget -i /path/to/inputfile
除了备份网站或者查找要下载的内容以供离线阅读之外,我们不太可能想要下载整个网站。
我们更有可能下载带有图像的单个 URL 或者下载文件,例如 zip 文件、ISO 文件或者图像文件。
考虑到这一点,我们不必在输入文件中键入以下内容,因为它很耗时:
- http://www.myfileserver.com/file1.zip
- http://www.myfileserver.com/file2.zip
- http://www.myfileserver.com/file3.zip
如果我们知道基本 URL 相同,请在输入文件中指定以下内容:
- 文件1.zip
- 文件2.zip
- 文件3.zip
然后,我们可以提供基本 URL 作为 wget 命令的一部分,如下所示:
wget -B http://www.myfileserver.com -i /path/to/inputfile
其他下载选项
默认情况下,-r 开关会递归下载内容并创建目录。
要将所有文件下载到单个文件夹,请使用以下开关:
wget -nd -r
与此相反的是强制创建目录,可以使用以下命令来实现:
wget -x -r
日志记录
如果我们在后台运行 wget 命令,我们将看不到它发送到屏幕的任何正常消息。
要将这些消息发送到日志文件以便我们可以随时检查进度,请使用 tail 命令。
要将 wget 命令的信息输出到日志文件,请使用以下命令:
wget -o /path/to/mylogfile www.onitroad.com
相反,根本不需要日志记录,也不需要向屏幕输出。
要省略所有输出,请使用以下命令:
wget -q www.onitroad.com
如何使用 wget 下载网站
wget 实用程序使用 Linux 命令行从 Web 下载网页、文件和图像。
我们可以使用单个 wget 命令从站点下载或者设置输入文件以跨多个站点下载多个文件。
根据手册页,即使用户已退出系统,也可以使用 wget。
为此,请使用 nohup 命令。
对于本教程,我们将学习如何下载此 Linux 教程 :
wget www.onitroad.com
在开始之前,使用 mkdir 命令在机器上创建一个文件夹,然后使用 cd 命令移动到该文件夹中。
例如:
mkdir onitroad cd onitroad wget www.onitroad.com
结果是包含从 Google 提取的内容的单个 index.html 文件。
图像和样式表保存在 Google 上。
要下载完整站点和所有页面,请使用以下命令:
wget -r www.onitroad.com
这将递归下载页面,最多 5 级深度。
五层深可能不足以从站点获取所有内容。
使用 -l 开关来设置我们希望进入的级别数,如下所示:
wget -r -l10 www.onitroad.com
如果我们想要无限递归,请使用以下命令:
wget -r -l inf www.onitroad.com
你也可以用 0 替换 inf ,这意味着同样的事情。
还有一个问题。
我们可能会在本地获取所有页面,但页面中的链接指向原始位置。
无法在页面上的链接之间进行本地单击。
要解决此问题,请使用 -k 开关将页面上的链接转换为指向本地下载的等效链接,如下所示:
wget -r -k www.onitroad.com
如果我们想获得网站的完整镜像,请使用以下开关,它消除了使用 -r 、 -k 和 -l 开关的必要性。
wget -m www.onitroad.com
如果你有一个网站,你可以使用这个简单的命令进行完整的备份。