oneline用wget镜像网站
最近收藏了一些老站点,是那些很久不更新,但是又有很多资源的站。
光是收藏感觉还不靠谱,谁知道哪天她们就突然消失了,所以决定镜像一下。
www.zhishiwu.com
比如我要镜像www.oschina.net,oneline:
1
wget -c -m -k -np -p -w 10 --random-wait --waitretry=5 http://www.oschina.net/
解释一下:
-c --continue的意思,简单来说就是续传
-m --mirror的意思,专门用来做镜像用的
-k --convert-links,转换镜像中的链接,把可能的链接都转换成本地相对链接,方便本地浏览 www.zhishiwu.com
-np --no-parent,不处理父亲目录
-p --page-requisites,wget会把显示一个html页面的所有元素都下载下来,包括图片、声音、样式表等
-w --wait,在做镜像的时候推荐加上--wait,这样相邻两次请求之间会隔上指定的时间,不会对服务器造成太多的负担
--random-wait, 和--wait配合使用,可以将请求间的等待时间一定范围内随机话;也可以避过站点的日志分析
--waitretry,当一个请求失败时,wget会再次请求,直到到达指定的次数
如果从浏览器中可以访问某个站点,但是在wget的时候返回“HTTP request sent, awaiting response... 403 Forbidden”,此时需要用-U(--user-agent)来改变wget的"User-Agent"字段。
可以用nc来获取浏览器的信息,执行下面的命令:
1
nc -l 8000
打开浏览器(我用的是chrome),访问http://localhost:8000,查看nc的输出:
1
GET / HTTP/1.1
2
Host: localhost:8000
3
Connection: keep-alive
4
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11
5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
6
Accept-Encoding: gzip,deflate,sdch
7
Accept-Language: en-US,en;q=0.8
8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
User-Agent:字段就是我们要的。
所以最终的命令是:
1
wget -U "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11" -c -m -k -np -p -w 10 --random-wait --waitretry=5 http://www.oschina.net/
大功告成,接下来是漫长的等待……