一、服务端的搭建

rpm -ivh http://mirrors.sohu.com/centos/6/os/x86_64/Packages/rsync-3.0.6-12.el6.x86_64.rpm

配置文件

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

  服务器配置文件(/etc/rsyncd.conf),该文件默认不存在,请创建它。

  具体步骤如下:

  #touch /etc/rsyncd.conf  #创建rsyncd.conf,这是rsync服务器的配置文件。
  #touch /etc/rsyncd.secrets  #创建rsyncd.secrets ,这是用户密码文件。
  #chmod 600 /etc/rsyncd/rsyncd.secrets  #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

  #touch /etc/rsyncd.motd


1-3 rsyncd.conf配置文件内容


  # Distributed under the terms of the GNU General Public License v2
  # Minimal configuration file for rsync daemon
  # See rsync(1) and rsyncd.conf(5) man pages for help

  # This line is required by the /etc/init.d/rsyncd script
  pid file = /var/run/rsyncd.pid
  port = 873
  address = 192.168.2.100
  #uid = nobody
  #gid = nobody
  uid = root
  gid = root

  use chroot = yes
  read only = yes

  #limit access to private LANs
  hosts allow=192.168.1.0/255.255.255.0 192.168.2.0/255.255.255.0
  hosts deny=*

  max connections = 5
  motd file = /etc/rsyncd.motd

  #This will give you a separate log file
  log file = /var/log/rsync.log

  #This will log every file transferred - up to 85,000+ per user, per sync
  #transfer logging = yes

  log format = %t %a %m %f %b
  syslog facility = local3
  timeout = 300

  [json]
  path = /var/www/html/json
  list=no
  ignore errors
  comment = /var/www/html/json
  auth users = root

  secrets file = /etc/rsyncd.secrets

模块定义

   模块定义什么呢?主要是定义服务器哪个目录要被同步。每个模块都要以[name]形式。这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过path 指定的。我们可以根据自己的需要,来指定多个模块。每个模块要指定认证用户,密码文件、但排除并不是必须的

  下面是前面配置文件模块的例子:

  [rhel4home]  #模块它为我们提供了一个链接的名字,在本模块中链接到了/home目录;要用[name] 形式

  path = /home    #指定文件目录所在位置,这是必须指定的 
  auth users = root   #认证用户是root  ,是必须在服务器上存在的用户
  list=yes   #list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了;
  ignore errors  #忽略IO错误
  secrets file = /etc/rsyncd.secrets   #密码存在哪个文件
  comment = linuxsir home  data  #注释可以自己定义

  exclude = beinan/ samba/  

1-4 rsyncd.secrets文件内容

root:yqqlmgs1cl&gdzt039

然后执行chmod 600 /etc/rsyncd.secrets

1-5rsyncd.motd文件内容

++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
2002------2015

  ++++++++++++++++++++++++++++++++++++++++++++++

1-6 修改/etc/xinetd.d/rsync内容(disable     = no

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#     allows crc checksumming etc.
service rsync
{
     disable     = no
     flags          = IPv6
     socket_type     = stream
     wait            = no
     user            = root
     server          = /usr/bin/rsync
     server_args     = --daemon
     log_on_failure  += USERID

}

三、启动rsync服务器及防火墙的设置


/usr/bin/rsync --daemon  --config=/etc/rsyncd.conf

vim /etc/sysconfig/iptables里面添加873端口

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


service iptables restart

  启动rsync服务器相当简单,有以下几种方法

  A、--daemon参数方式,是让rsync以服务器模式运行

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

  B、xinetd方式

  修改services加入如下内容
  # nano -w /etc/services

  rsync  873/tcp  # rsync 
  rsync  873/udp  # rsync

  这一步一般可以不做,通常都有这两行(我的RHEL4和GENTOO默认都有)。修改的目的是让系统知道873端口对应的服务名为rsync。如没有的话就自行加入。

  设定 /etc/xinetd.d/rsync, 简单例子如下:

  # default: off
  # description: The rsync server is a good addition to am ftp server, as it \
  #       allows crc checksumming etc.
  service rsync
  {
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
  }

  上述, 主要是要打开rsync這個daemon, 一旦有rsync client要连接時, xinetd会把它转介給 rsyncd(port 873)。然后service xinetd restart, 使上述设定生效.

  rsync服务器和防火墙

  Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。

  #iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
  #iptables -L  查看一下防火墙是不是打开了 873端口

  如果你不太懂防火墙的配置,可以先service iptables stop 将防火墙关掉。当然在生产环境这是很危险的,做实验才可以这么做哟!

服务端测试

rsync --list-only [email protected]::json

四、客户端设置

1、设置密码

vim /etc/rsync.secret

输入yqqlmgs1cl&gdzt039

chmod 600 /etc/rsync.secret

服务端测试

rsync --list-only [email protected]::json

正式使用

/usr/bin/rsync -avzP --password-file=/etc/rsync.secret [email protected]::json /var/json

编写脚本

/root/rsync.sh

#!/bin/sh

/usr/bin/rsync -avzP --password-file=/etc/rsync.secret [email protected]::json /var/json