用wget实现整站下载

搞服务器维护的,搬网站一定是免不了的,最原始的是ftp下载全部的文件,然后,ftp在上传到新空间。稍微先进点的,让空商打个包,然后用到服务器上去下载,然后解包。后来用过perl写的一个ftp模块,可以递归下载。再后来看过baidu的面试题,发现用一个ftp命令的shell脚本也可以递归下载,而不需要安装perl的ftp模块。

#!/bin/sh
FILE=*
ftp -i -in <<!
open www.xxx.com
user user password

cd /remote/dir
lcd /local/dir
mput $FILE
bye
!

到今天猛然发现wget本来就可以ftp递归下载的,真是傻到家了

wget -m ftp://user:passwd@ip

就行了,下面有wget的详细说明:

http://blog.chinaunix.net/u2/71107/showart_733004.html

不过这里遇到一个小麻烦,公司的ftp帐号的用户名是带有@符号的,造成wget解析ftp地址错误。

[root@xxx ~]# wget -m ftp://webmaster@xxoo.com:xxoo@210.51.46.220
ftp://webmaster@xxoo.com:xxoo@210.51.46.220: Bad port number.

在google一下,发现下面的东东:

http://203.208.37.104/search?q=cache:iq2EcANebAIJ:www.progsoc.uts.edu.au/lists/slug/2000/June/msg00217.html+wget+username+contain+@&hl=zh-CN&ct=clnk&cd=1&gl=cn&st_usg=ALhdy29qAWvwdv2LttFvs9hcq8yqGKmjRw

源网站打不开,只能看google的快照,大意是:阅读wget的代码后发现可以将@转码为%40解决问题!开源就这点好,所有的问题的解决方法都在代码中!

形如:

wget -m ftp://webmaster@xxoo.com:password@124.74.193.xxx

改写成

wget -m ftp://webmaster%40xxoo.com:password@124.74.193.xxx

就ok了

一个更完善的

wget -m -b -q -X “*syssite/home/cache/1/*” ftp://webmaster%40xxoo.com:password@124.74.193.xxx

-b后台运行
-q不向标准输出输出任何信息
-X排除某些目录,可以多个连用

Redhat AS5的wget是被修改过的-m参数好像不能用,按这个文档重装一下就行了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据