上篇文章写到使用curl下载上传ftp,陋室博客最近想把之前的实验页面做一个镜像站点,不过由于curl不支持递归下载,所以当要备份一个ftp服务器上的文件时,略显不足。
还好linux为我们提供了更加强大的命令wget,下面来看一下wget如何备份一个网站下所有文件:
首先下载ftp服务器上的所有文件用递归参数-r:
wget ftp://name:passwd@ftp.malu.me -r
不过以上方式下载下来的文件会出现网站站名的目录,把该目录去掉,加上参数-nH –cut-dirs=number(number为需要削减的目录层数):
wget ftp://name:passwd@ftp.malu.me –r –nH --cut-dirs=1
当我们需要更新下载时,可以把原来有的文件不去下载,wget也提供了更新方式下载,加参数-N:
wget ftp://name:passwd@ftp.malu.me –r –nH –cut-dirs=1 –N
文件下载都是在当前目录,想要下载到指定目录怎么办,后面加个参数-P:
wget ftp://name:passwd@ftp.malu.me –r –nH –cut-dirs=1 –N –P /home/dotcloud/current
每次下载有一大堆返回参数,如何把他们去掉,后面加个参数-q就解决啦:
wget ftp://name:passwd@ftp.malu.me –r –nH –cut-dirs=1 –N –P /home/dotcloud/current –q
网站上文件很多,一次执行需要很长时间,让它在后台执行吧,加上参数-b:
wget ftp://name:passwd@ftp.malu.me –r –nH –cut-dirs=1 –N –P /home/dotcloud/current –q –b
通过以上案例体会到wget的强大了吧,单条命令就能把一个网站的copy工作完成,再加上Crontab计划任务,让其在深夜执行,一个完美的网站备份(镜像)工作完成了。
*解决wget bad port number的办法
有些ftp的用户名和密码带有@号,会导致wget出现bad port number的错误。出现这个的原因是因为包含两个以上的@,只需要把前面的@换成%40即可。