IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

rsync主动同步代码

废墟 2012-01-24 13:50:41 累计浏览 3,867 次
本机暂存
目前项目是由多台机器在提供的,他们的代码都一致,但是我又不想写crontab去定时同步代码,因为万一服务器之间连接稍有故障,负载就会飙升。而且我的代码更新并不会太频繁,所以设计了以下方案:
1.拿一台机器当工作机
2.需要同步代码的前端机器都搭建rsync服务端
3.我同步代码到工作机,执行一个shell脚本,代码同步到前端机

rsync的服务器配置如下
建立一个/etc/rsyncd.conf文件,内容
uid = root
gid = root
use chroot = no
max connections = 4
strict modes =yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log

[app]
path = /data/www/xs8.cn/app.xs8.cn/
comment = app.xs8.cn
ignore errors
read only = no
list = yes
secrets file = /etc/rsync.pas
hosts allow = 10.0.0.100
hosts deny = 0.0.0.0/0

[www]
path = /data/www/xs8.cn/www.xs8.cn/
comment = www.xs8.cn
ignore errors
read only = no
list = yes
secrets file = /etc/rsync.pas
hosts allow = 10.0.0.100
hosts deny = 0.0.0.0/0

新建一个/etc/rsync.pas文件,内容为“用户名:密码”
xs8:xs8rsync

可以看到,我的其中一台前端需要提供app和www这两个二级域名的服务
启动前端机的rsync服务/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 可以把这句写进/etc/rc.local

然后在工作机上建立与前端机相同的rsync.pas文件
在来个同步脚本sync_app
/usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsync.pas --exclude-from=/data/www/xs8.cn/app.xs8.cn/exclude.txt /data/www/xs8.cn/app.xs8.cn/ xs8@10.0.0.11::app
/usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsync.pas --exclude-from=/data/www/xs8.cn/app.xs8.cn/exclude.txt /data/www/xs8.cn/app.xs8.cn/ xs8@10.0.0.12::app

给予执行权限chmod +x /opt/sbin/sync_app

你可以看到我排除了一些文件不进行同步,这个exclude文件内容如下
exclude.txt
application/cache
application/logs

从需要同步的目录算起,下面哪些不需要同步,写上就行,一行一个文件或者目录

这样,当我更改代码以后,先上传到我的工作机,然后执行/opt/sbin/sync_app就会将代码发布到所有前端提供服务的机器上了

同分类推荐文章

  1. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)
  2. WARNING: detected duplicate paths to the same disk导致crs无法正常启动故障解决 (2026-05-24 22:24:49)
  3. Terraform 极简入门:从 AWS-CLI 到基础设施即代码(IaC) (2026-05-20 08:00:00)

查看更多 DevOps 文章 →

建议继续学习

  1. rsync同步的艺术 (累计阅读 9,513)
  2. Linux探索:一次删除一百万个文件的最快方法 (累计阅读 6,810)
  3. rsync 的核心算法 (累计阅读 5,550)
  4. 加速scp传输速度 (累计阅读 5,332)
  5. curl测试下载速度 (累计阅读 5,250)
  6. Dropbox差异同步算法rsync及其改进算法原理 (累计阅读 5,168)
  7. rsync自动输入密码实现数据备份 (累计阅读 5,066)
  8. 大量小文件的实时同步方案 (累计阅读 4,550)
  9. puppet使用rsync来同步文件教程 (累计阅读 4,170)
  10. 使用 rsync 或 unison 备份或同步支持 ssh 的 web 主机 (累计阅读 3,987)