一.安装rsync
centos7系统默认安装了rsync(可使用命令进行查看);如果没有安装,请使用命令安装
yum -y install rsync
如果本地安装,则需要拷贝rpm文件,进入rpm文件目录,执行命令:(文件名为rpm文件名)
 rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm  --force --nodeps

添加一个控制脚本:
[root@backup ~]# vim /etc/init.d/rsync

插入内容:如文件rsync文件
给脚本设置权限:
[root@backup ~]# chmod a+x /etc/init.d/rsync
启动命令:
    [root@backup ~]# service rsync start
重启命令:
    [root@backup ~]# service rsync restart
或者可以停止后再次启动:

    [root@backup ~]# service rsync stop
[root@backup ~]# service rsync start

二.配置rsync
 如果没有rsyncd.conf创建touch  /etc/rsyncd.conf。
修改配置文件:/etc/rsyncd.conf。使用vim命令打开(没有安装vim命令的,请先安装vim:yum -y install vim)
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:
# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area
上面这是默认的配置。
添加如下配置:
uid = root                              
# //设置运行rsync 进程的用户
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid        
#//CentOS7中yum安装不需指定pid file 否则报错
lock file=/var/run/rsyncd.lock
log file = /var/log/rsyncd.log     
# //此文件定义完成后系统会自动创建
#exclude = lost+found/ 需要排除的文件
transfer logging = yes
timeout = 900
ignore nonreadable = yes         
# //同步时跳过没有权限的目录
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2          
#  //传输时不压缩的文件
在两台服务器上完成上面两步的配置。
三.服务器配置:
1.在配置文件中添加如下配置:(位置:/etc/rsyncd.conf)
[test]         //此名字即备份服务器端使用rsync来同步的模块名
path=/usr/local/test    //实际需要同步的路径
comment=test    //规则描述
ignore errors
read only=no   //表示可以pull 
write only=no      //表示可以push
list=no
auth users=rsyncuser    
//备份服务器端获取文件的身份此用户并不是本机中确实存在的用户
secrets file=/etc/rsyncd.password     
//用来认证客户端的秘钥文件,格式 username:password,此文件权限一定需要改为600,且属主必须与运行rsync的用户一致。
hosts allow=*    //允许所有主机访问

完成上述配置,并保存。
注意:上面的中文和注释在追加的时候都不要写进文件。
2.    创建密码文件
    echo 'rsyncuser:123456'>/etc/rsyncd.password   
    //文件用户名和路径为上面定义,别写错,密码自己定
    chmod 600 /etc/rsyncd.password      //修改权限

3.    重启服务
systemctl restart rsync.service  


四.备份服务器
1.    创建密码文件
echo '123456' >>/etc/rsyncd.password     
//注意这里只需要服务器rsyncd.password 中的密码
chmod 600 /etc/rsyncd.password
2.    重启服务
systemctl restart rsyncd.service
3.    编写文件同步的脚本
执行vim /root/test.sh命令

#!/bin/bash
rsync -auv --password-file=/etc/rsyncd.password rsyncuser@192.168.101.22::test /root/test/
说明:password-file:备份服务器上密码文件
 rsyncuser:服务器上配置的用户
 192.168.101.22:服务器地址
 test:服务器上配置的模块名
 /root/test:备份文件的地址
4.    执行定时任务
输入命令crontab -e
输入执行时间:*/5 * * * * sh /root/test.sh(每5分钟执行一次)
五.其他操作
1.    两台服务器是需要开启873端口的
firewall-cmd --add-port=873/tcp --permanent //添加端口到默认区域
firewall-cmd --reload //重启
2.    关于SELinux
临时关闭SELinux
setenforce 0
查看状态
getenforce
开机关闭selinux(永久关闭)
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了
3.    rayncd服务开机自启
systemctl enable rsyncd.service
检查是否成功启动
netstat -lnp|grep 873
4.    定时任务相关
查询任务
命令:crontab -l
开启服务
systemctl start crond
关闭服务
systemctl stop crond
重启服务
systemctl restart crond
重新加载配置
systemctl reload crond
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start即可


注:查看备份主机的定时任务运行情况

 tail -f /var/log/cron

如果没有同步执行

tail -f /var/spool/mail/root
查看出错信息进行修改。
#!/bin/bash 
  
#this script for start|stop rsync daemon service 
#date:2012/2/13 
  
status1=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
pidfile="/var/run/rsyncd.pid" 
start_rsync="rsync --daemon --config=/etc/rsyncd.conf" 
  
function rsyncstart() { 
  
    if [ "${status1}X" == "X" ];then 
  
        rm -f $pidfile       
  
        ${start_rsync}   
  
        status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
          
        if [  "${status2}X" != "X"  ];then 
              
            echo "rsync service start.......OK" 
              
        fi 
  
    else 
  
        echo "rsync service is running !"    
  
    fi 
} 
  
function rsyncstop() { 
  
    if [ "${status1}X" != "X" ];then 
      
        kill -9 $(cat $pidfile) 
  
        status2=$(ps -ef | egrep "rsync --daemon.*rsyncd.conf" | grep -v 'grep') 
  
        if [ "${statusw2}X" == "X" ];then 
              
            echo "rsync service stop.......OK" 
        fi 
    else 
  
        echo "rsync service is not running !"    
  
    fi 
} 
  
  
function rsyncstatus() { 
  
  
    if [ "${status1}X" != "X" ];then 
  
        echo "rsync service is running !"   
      
    else 
  
         echo "rsync service is not running !"  
  
    fi 
  
} 
  
function rsyncrestart() { 
  
    if [ "${status1}X" == "X" ];then 
  
               echo "rsync service is not running..." 
  
               rsyncstart 
        else 
  
               rsyncstop 
  
               rsyncstart    
  
        fi       
}  
  
case $1 in 
  
        "start") 
               rsyncstart 
                ;; 
  
        "stop") 
               rsyncstop 
                ;; 
  
        "status") 
               rsyncstatus 
               ;; 
  
        "restart") 
               rsyncrestart 
               ;; 
  
        *) 
          echo 
                echo  "Usage: $0 start|stop|restart|status" 
          echo 
esac