rsync手动部署
2013-10-30 16:51:14 点击:

更新线上应用的时候,如果手动部署容易出错和遗漏,这里使用Linux自带的rsync功能,当应用在测试机测试ok,自动同步到正式机。 这里我们把...

更新线上应用的时候,如果手动部署容易出错和遗漏,这里使用Linux自带的rsync功能,当应用在测试机测试ok,自动同步到正式机。 这里我们把测试机称为Master,正式机称为Slave,应用从测试机同步到正式机,从Master同步到Slave。以下操作均在root账号下进 行。

 

Master端配置:

1.vi /etc/rsyncd.conf

2.输入以下内容:

Conf代码  收藏代码
  1. port = 873  
  2. uid = root  
  3. gid = root  
  4. use chroot = yes  
  5. read only = yes  
  6. #limit access to private LANs  
  7. hosts allow = YOURS  
  8. max connections =10  
  9. pid file = /var/run/rsyncd.pid  
  10. log file = /var/log/rsyncd.log  
  11. timeout = 300  
  12.   
  13. [testlink]  
  14. path = /tmp/rsyntest  
  15. list = yes  
  16. auth users = root  
  17. uid = root  
  18. gid = root  
  19. exclude = *.xml *.properties *.log  
  20. secrets file = /etc/rsyncd.pass  
  21. read only = no  

3.如果要排除某些文件可以在module节点下增加exclude = *.xml *.properties *.log 以空格分隔

4.mkdir -p /tmp/rsyntest

5.echo "this is test" > /tmp/rsyntest/test.test

6.echo "root:123456" > /etc/rsyncd.pass,这里root可以是其他Master的用户,但是必须是系统用户。

7.chmod 600 /etc/rsyncd.pass

8.启动rsync命令: rsync --daemon --config=/etc/rsyncd.conf;

   停止rsync命令:cat /var/run/rsyncd.pid | xargs kill -9 && rm -rf /var/run/rsyncd.pid。

   使用启动命令,启动Master的rsync服务。

9.记得在Master上对Slave机器开启iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -s SlaveIPS -j ACCEPT

 

Slave端配置测试

1.echo "123456" > /etc/rsyncd.pass

2.chmod 600 /etc/rsyncd.pass

3.cd /tmp/rsyntest

4.注意Slave端的/etc/rsyncd.pass只有密码,没有用户名root!!! 否则 指定pass文件运行时,rsync -vrtup --delete --password-file=/etc/rsyncd.pass root@masterIP::testlink /tmp/rsyntest,会报以下错误:

Java代码  收藏代码
  1. @ERROR: auth failed on module testlink  
  2. rsync error: error starting client-server protocol (code 5) at main.c(1527) [receiver=3.0.6]  

 在Master端的日志文件/var/log/rsyncd.log,有以下报错内容:

Java代码  收藏代码
  1. 2012/04/09 15:07:48 [28566] name lookup failed for slaveIP: Name or service not known  
  2. 2012/04/09 15:07:48 [28566] connect from UNKNOWN (slaveIP)  
  3. 2012/04/09 15:07:48 [28566] auth failed on module testlink from unknown (slaveIP): password mismatch  

 

5.如果Slave端的/etc/rsyncd.pass和Master端一样,则只能按照以下不指定pass文件的方式运行:

rsync -vrtup --delete  root@masterIP::testlink /tmp/rsyntest  提示输入密码,输入/etc/rsyncd.pass中配置的密码123456,会有以下输出:

Shell代码  收藏代码
  1. receiving incremental file list  
  2. ./  
  3. test.test  
  4.   
  5. sent 80 bytes  received 183 bytes  75.14 bytes/sec  
  6. total size is 30  speedup is 0.11  

 

 

6.同步完毕在Master和Slave的对应目录分别执行  ls -alR|grep "^[-d]"|wc,看看文件夹和文件数是否一致。

 

rsyncd.conf的配置说明和rsync命令详解:

http://hi.baidu.com/xc_hai/blog/item/0ee61e8e321017f2503d9288.html



相关热词搜索:host deny

上一篇:利用rsync实现数据远程容灾备份
下一篇:Rsync使用注意事项