现状:
现有两个站点,分别称为SiteR和SiteF,两者都可以通过FTP管理,且SiteR有Shell权限并支持perl

目的:
将SiteF作为主站,定时将SiteF上的WEB内容和数据库数据同步到SiteR,同步是非实时且单向的

实现方法:
1、在SiteR上使用FTPSync.pl脚本实现通过FTP方式的SiteF到SiteR的文件同步(下载地址http://ossw.ibcl.at/FTPSync/

2、在SiteF上编写一个php页面,作用是定时将数据库数据导出成文本格式并压缩,核心代码如下,原理是使用system方法执行MySQL的备份命令mysqldump,同时使用find命令删除过期备份文件
引用
$command = "mysqldump -h数据库地址 -u用户名 -p密码 --default-character-set=utf8 数据库名|gzip>生成的文本备份文件路径及名称";
system($command, $retval);

$command = "find 备份路径/*.gz -mtime +10 -exec rm {} \\;";
system($command, $retval);


3、在SiteR上编写Shell脚本,核心代码如下
引用
//远程调用SiteF备份页面,生成数据库备份
wget http://xxx.xxx/xxx/xxx.php

//同步远程文件到本地
ftpsync.pl ftpuser=FTP帐号 ftppasswd=FTP密码 本地目的路径 ftp://远程FTP源地址//

如果源FTP地址是从根目录开始,最后要写两个/,这个貌似是FTPSync的一个BUG,我使用的是1.3.01

4、在cron中定时调用第3步的Shell脚本
引用
#每天凌晨0点
0 0 * * * /xxx/xxx


此方法的必备条件:
1、各个站点可通过FTP获取源文件
2、其中一个站点有Shell权限,且支持perl,且可以使用cron
标签: , , ,
三文
2009-06-26 00:49
先收藏了!
无为而为 回复于 2009-06-27 02:35
grin
分页: 1/1 第一页 1 最后页
发表评论   请注意:本站已经启用评论审核机制,审核通过才能显示!
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称 *   
网址   电邮   [注册]
               

验证码 不区分大小写