Skip to content


rsync 配置免登录同步服务

平时可以利用ssh客户端密钥建立信任关系来使rsync同步,但可能存在用户权限过大的问题.
这里以daemon或服务的方式运行可以提高安全性.

一.rsync的安装
rsync现在系统一般都自带
a.yum install rsync

b.http://rsync.samba.org/
使用rpm或源码等方式安装

二.配置rsync
rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

1.服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创建它。
注:关于auth users是必须在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = www,root
定义一个discuz的模块
vi /etc/rsyncd.conf

  1. pid file = /var/run/rsyncd.pid   
  2. port = 873
  3. address = 192.168.0.24 
  4. #uid = nobody
  5. #gid = nobody   
  6. uid = www
  7. gid = website
  8.  
  9. use chroot = yes 
  10. read only = no
  11.  
  12. #limit access to private LANs
  13. hosts allow=192.168.0.0/255.255.255.0 
  14. hosts deny=*
  15.  
  16. max connections = 5
  17. motd file = /etc/rsyncd.motd
  18.  
  19. #This will give you a separate log file
  20. #log file = /var/log/rsync.log
  21.  
  22. #This will log every file transferred - up to 85,000+ per user, per sync
  23. #transfer logging = yes
  24.  
  25. log format = %t %a %m %f %b
  26. syslog facility = local3
  27. timeout = 300
  28.  
  29. [discuz]   
  30. path = /opt/htdocs/bbs   
  31. list=no
  32. ignore errors
  33. auth users = www
  34. secrets file = /etc/rsyncd.secrets 
  35. comment = This is bbs data 
  36. #exclude =

2.设定密码文件
密码文件格式很简单,rsyncd.secrets的内容格式为:
用户名:密码
我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,自己尝试着设置一下吧。
vi /etc/rsyncd.secrets

  1. www:c1gstudiopass

chown root:root /etc/rsyncd.secrets  #修改属主
chmod 600 /etc/rsyncd.secrets #修改权限

注:1、将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功! 出于安全目的,文件的属性必需是只有属主可读。
2、这里的密码值得注意,为了安全你不能把系统用户的密码写在这里。比如你的系统用户www密码是000000,为了安全你可以让rsync中的www为c1gstudiopass。这和samba的用户认证的密码原理是差不多的。

3.设定rsyncd.motd 文件;
它是定义rysnc服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的 c1gstudio.com ftp ……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个 rsyncd.motd的内容为:
vi /etc/rsyncd.motd

  1. ++++++++++++++++++++++++++++++++++++++++++++++
  2. rsync services! staff use only
  3. ++++++++++++++++++++++++++++++++++++++++++++++

三.运行
A. xinetd方式
省略

B. –daemon参数方式,是让rsync以服务器模式运行

  1. /usr/bin/rsync --daemon --config=/etc/rsyncd.conf  #--config用于指定rsyncd.conf的位置,如果在/etc下可以不写

添加到/etc/rc.local,启动后自动运行

  1. echo '/usr/bin/rsync --daemon --config=/etc/rsyncd.conf' >> /etc/rc.local

防火墙
授权192.168.0.0 C类

  1. iptables -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 873 -j ACCEPT

授权单个IP192.168.0.21

  1. iptables -A INPUT -s 192.168.0.21 -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

/etc/init.d/iptables save

四,调试
192.168.0.24为rsynce daemon端,接收数据
192.168.0.21为源数据推送端,发送数据

推送端调试列表
rsync –list-only www@192.168.0.24::
rsync: failed to connect to 192.168.0.24: Connection timed out (110)
检查防火墙,rsyncd里用户权限
传送本地/opt/htdocs/bbs/data/cache 到远端discuz模块下的data目录

  1. rsync -av /opt/htdocs/bbs/data/cache www@192.168.0.24::discuz:/data/

创建密码文件方便免登录,密码和服务器端保持一致

  1. echo 'c1gstudiopass' > /etc/rsyncd.passwd
  2. chown root:root /etc/rsyncd.passwd
  3. chmod 600 /etc/rsyncd.passwd

以密码文件全部同步一次

  1. rsync -av --delete  --password-file=/etc/rsyncd.passwd /opt/htdocs/bbs/ www@192.168.0.24::discuz

最后再以脚本方式配合inotify和crontab就可以实现自动同步

参考:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html

Posted in 备份.

Tagged with , , .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. 39919 says

    我们公司用内网vpn做的.



Some HTML is OK

or, reply to this post via trackback.