这边主要给大家介绍的是服务器模式 

服务器模式:

这种模式是基于C/S模式的,在这种模式下,rsync在后台启用了一个守护进程,这个守护进程在rsync服务器永久运行,
用于接收文件传输请求,因此,客户端既可以把文件发给守护进程,也可以向守护进程请求文件。rsync的服务器模式非常适合
为异地的中心备份服务器或数据异地存储库来使用。
 

企业案列:  搭建远程容灾备份系统

为了保证数据安全,需要建立一个远程容灾系统,将网站数据在每天凌晨3点备份到远程的容灾服务器上,由于数量很大,每天
只能进行增量备份,仅仅备份当天增加的数据,当网站出现故障后,可以通过备份最大程度的恢复数据。
 
解决方案:这里假定有A、B两个linux系统,A系统作为网站服务器,B系统作为A系统的远程容灾备份机,因此A系统就是rsync的服务器,
B系统就是作为A系统的远程容灾备份,需要在A、B系统上都安装rsync软件,这样,在A系统上运行rsync守护进程,而在B上可以通过
系统守护进程crontab来定时备份由A系统指定的数据,从而实现数据的远程容灾
 
系统环境:A系统:192.168.1.10
 B系统:192.168.1.11
 
A、B系统上rsync软件的安装:1、./configure   2、make 3、make install
 
A系统上rsync的配置文件:rsync配置文件/etc/rsyncd.conf,安装时默认没有这个文件,可手动创建一个即可。
 vim /etc/rsyncd.conf
  1. uid=nobody          #指定该模块传输文件时守护进程应该具有的用户ID,默认为nobody 
  2.                 gid=nobody          #指定该模块传输文件时守护进程应该具有的用户组ID,默认为nobody 
  3.                 use chroot=no       ##是否让进程离开工作目录 
  4.                 max connections=10  #指定该模块的最大连接数 
  5.                 strict modes=yes    #用于指定是否检查口令文件的权限,yes为检查口令权限,如果设置为yes,密码文件的权限必须为root用户权限 
  6.                 pid file=/var/run/rsyncd.pid 
  7.                 lock file=/var/run/rsyncd.lock 
  8.                 log file=/var/log/rsyncd.log 
  9.                  
  10.                 [abc] 
  11.                 path=/abc 
  12.                 comment=abc file 
  13.                 ignore errors   #表示可以忽略一些无关的I/O错误 
  14.                 read only =no   #设置为no表示客户端可以上传文件,设置为yes表示只读 
  15.                 write only=no   #设置为no表示客户端可以下载文件,设置为yes表示不能下载 
  16.                 hosts allow=*    
  17.                 hosts deny=192.168.1.131 
  18.                 list=false      #用于设定当客户请求可以使用的模块列表,该模块是否被列出,默认为true 
  19.                 uid=root 
  20.                 gid=root 
  21.                 auth users=backup 
  22.                 secrets file=/etc/server.pass 
  23. /etc/server.pass下内容为:backup:abc123
  24. A系统上启动rsync:/usr/local/bin/rsync --daemon

B系统上配置rsync: 在备份机 上不用做任何配置,只需执行rsync同步操作即可,为了同步过程中不用输入密码,需要在B系统上创建一个serve.pass文件,该文件的 内容与A系统上的server.pass密码一样即可,路径可以随意放,用时指定就行

我们可以把它写成一个脚本方便管理:vim /root/rsync.sh

 

  1. #!/bin/bash 
  2. #Decription:rsync Config 
  3. /usr/local/bin/rsync -vzrtopg--delete --progress --exclude "*access" --exclude "debug*" \
  4. backup@192.168.1.10::/abc /date --password-file=/etc/server.pass 
  5.  
  6. #-vzrtopg:   
  7.      v是“--verbose”显示详细输出模式 
  8.      z是“--compress”压缩模式 
  9.       r是“--recursive”以子目录递归模式 
  10.       t是“--times“用来保持文件信息时间 
  11.       o是”--owner“用来保持文件的属主信息 
  12.       p是”--perms“用来保持文件权限 
  13.       g是”--group“用来保持文件的属组 
  14.       --progress:用来显示数据镜像同步的过程 
  15.       --delete:指定以rsync服务器为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致 
  16.       --exclude:用于排除不需要文件传输的类型 
  17.     /date:用户指定备份文件在客户端机器上的存放路径    

chmod +x /root/rsync.sh

每天3点钟的时候自动执行这个脚本进行数据同步可以crontab

crontab -e

0 3 * * * /root/rsync.sh >/dev/null 2>&1

常见问题: 问题一:
  1. @ERROR: chroot failed 
  2. rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 原因:服务器端的目录不存在或无权限。
  3.        创建目录并修正权限可解决问题。
  4.  

问题二:

  1. @ERROR: auth failed on module tee 
  2. rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 
  3. 原因:

    服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。

    提供正确的用户名密码解决此问题。

问题三:

  1. @ERROR: Unknown module ‘tee_nonexists’ 
  2. rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 
  3. 原因:

    服务器不存在指定模块。

    提供正确的模块名或在服务器端修改成你要的模块以解决问题。