1.为方便以下在同一台机器完成,但在真实环境,可以通过ssh等工具实现不同主机之间的代码同步
2.文件目录说明
a.源码宿主机源码地址
b.目标主机rsyn地址(源码rsync的目标地址)
c.目标主机备份地址(主要记录上一个版本的源码)
d.生成环境地址
3.主要工具
rsync、php、git
4.主要步骤
(1).获取任务锁,获取失败退出
(2).源码更新最新代码,(如果是git, 可以通过 exce("cd srcDir;git pull 2>&1") )
(3).通过rsync,将源码推送至目标主机rsync地址
(4).以备份代码为准,与rsync目录中的代码做比较,找出差集并记录在一个文件中
(5).通过rysnc,将rsync地址代码推送的备份地址
(6).将备份代码推送到生成环境(这里rsync命令不删除不存在的文件。这是与上面rsync目录的区别,也是d步骤的目的)
(7).从生成环境代码中,删除差集文件
(8).释放任务锁
5.其他说明
(1).为什么直接从源代码rsync的生产环境代码?
a.主要是保持生产代码的干净,完整。同时不受rsync错误影响。
b.通过rsync文件作为过渡,进行一些额外工作,而生成代码始终保持的是最终代码。
(2).在 "备份代码推送到生成环境" 时,为什么不通过 --delete 删除文?
a.生产环境中有些文件不是通过发布系统中发布的,而是直接再服务器中编辑生成,具有特殊作用。如果通过rsync --delete,会删除这些。
(3).为什么引入备份?
a.保存上一个版本,对于回