搞服务器维护的,搬网站一定是免不了的,最原始的是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一下,发现下面的东东:
源网站打不开,只能看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参数好像不能用,按这个文档重装一下就行了