Linux 下的 wget 其实非常强大,可以制作网站镜像,或者来备份你的网站,相关参数如下:
-r, --recursive
递归循环下载整个站点。
-m, --mirror
制作网站镜像模式。
--no-clobber
避免重复现在相同文件。
-A, --accept=LIST
允许下载的扩展名,逗号分隔。
-k, --convert-links
让下载得到的 HTML 或 CSS 中的链接指向本地文件,只有完成下载之后才进行转换。
-E, --adjust-extension
根据 content-type
类型,以合适的扩展名保存 HTML/CSS 文档。
-p, --page-requisites
下载所有用于显示 HTML 页面的图片、CSS之类的元素。
-np, --no-parent
不追溯至父目录,只在当前和子目录中进行抓取。不过对于一些样式文件、js文件可能都在上级目录中,使用时需要注意。
-w, --wait=SECONDS
等待间隔为 SECONDS 秒。避免把对方服务器压垮。
--waitretry=SECONDS
在获取文件的重试期间等待 1..SECONDS 秒。
--random-wait
获取多个文件时,每次随机等待间隔。
-O, --output-document=file
对下载文件进行重命名
-o, --output-file=FILE
记录下载日志,并将日志信息写入 FILE。
-U, --user-agent=AGENT
标识为 AGENT 而不是 Wget/VERSION。比如使用Chrome流量器的Agent “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36”,这样可以避免被对方网站。
-D, --domains=LIST , --exclude-domains=LIST
逗号分隔的可接受或不可接受(--exclude-domains)的域列表。
--restrict-file-names=modes
其中OS的值可以为: unix, windows, nocontrol, ascii, lowercase, and uppercase
限定文件名中的字符为 modes 允许的字符。比如你的本地操作系统是Windows,对方服务器使用的是linux,由于操作系统的差异,有些字符在Linux下可以作为文件名的一部分,但在Window下不允许。
比如你的本地系统是windows则用法如下方式:
--restrict-file-names=windows
如果你的本地系统为Linux或者MacOS,则可以使用如下方式:
--restrict-file-names=unix
-c, --continue
断点续传,如果一个站点的页面很多,建议使用该选项。
--connect-timeout
请求超时时间。
-t, --tries=NUMBER
设置重试次数为 NUMBER (0 代表无限制)。
--limit-rate
控制下载速度,如:
--limit-rate=100k
-b, --background
按照后台模式运行,启动后转入后台。
-P, --directory-prefix=PREFIX
将下载的所有文件保存在 PREFIX 目录中。
-R, --reject=LIST
屏蔽某类扩展名的文件,用逗号分隔。比如不下载gif如图片:
--reject=gif
--reject-regex=REGEX
以正则表达式的方式屏蔽某些url。
-e robots=off
不遵循robots协议。默认情况下wget遵循robots协议。
关于robots协议可以参考本博客的另外一篇文章《Robots.txt 文件写法、生成、检测工具》。
-I, --include-directories=LIST
允许抓取的目录列表,逗号分隔,可以使用通配符“*”。
-X, --exclude-directories=LIST
排除目录的列表,逗号分隔,可以使用通配符“*”。
例子:
wget
-m \
-np \
-E \
-k \
-c \
-r \
--directory-prefix=/tmp/pagespeed_doc \
-e robots=off \
--random-wait \
--restrict-file-names=unix \
--domains=developers.google.com \
--include-directories=speed/ \
--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" \
--output-file=/tmp/developers.google.com.log \
"https://developers.google.com/speed/pagespeed/module/"
下载过程中查看下载日志:
下载完成后,查看 /tmp/pagespeed_doc
中的内容如下:
本例的镜像页面可以点击这里来访问。
注意:wget 不支持 socks 代理,如需走代理请和 tsocks 配套使用,tsocks 的安装参见本博客的另外一篇文章《 Mac 下安装 tsocks 前置代理工具 》。
另外,wget 对 gzip 压缩的 css 文件支持的不好,不能自动解压,需要手动解压,比如:
$ wget https://developers.google.com/_static/254aea64a1/css/devsite-google-blue.css
$ file devsite-google-blue.css
devsite-google-blue.css: gzip compressed data, max compression
直接 cat devsite-google-blue.css
会显示乱码。
wget 不支持多线程下载,对于较大文件 wget 有时候显得力不从心。axel 可以解决这个问题。axel 的安装方法如下:
$ wget -O axel.zip https://github.com/angelj-a/axel/archive/master.zip
$ unzip axel.zip
$ cd axel-master/
$ sudo ./configure
Configuration done:
Internationalization enabled.
Debugging disabled.
Binary stripping enabled.
$ sudo make
$ sudo make install
用法
$ axel -v -a -n 10 http://github.com/naver/pinpoint/archive/1.6.0.zip
myget 是另外一个Linux下的多线程下载工具。
安装
$ wget http://myget.sourceforge.net/release/myget-0.1.2.tar.gz
$ tar -zxvf myget-0.1.2.tar.gz
$ cd myget-0.1.2
$ sudo ./configure
$ sudo make
$ make install
用法:
$sudo mytget -n 5 http://github.com/naver/pinpoint/archive/1.6.0.zip
Redirect to: https://github.com/naver/pinpoint/archive/1.6.0.zip
Redirect to: https://codeload.github.com/naver/pinpoint/zip/1.6.0
Begin to download: pinpoint-1.6.0.zip
Filesize: 29M
1% [> ] [307K] [ 0B/s] [ETA:--:--
出处:https://www.coderxing.com/wget-website-mirror.html
本文为原创文章,采用署名-相同方式共享 3.0 中国大陆(CC BY-SA 3.0 CN))进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。