一、什么是rsync
 
rsync是Linux/UNIX系统下的文件同步和数据传输工具,它采用rsync算法使一个客户机和远程文件服务器之间的文件同步。通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;rsync可以在中断之后恢复传输;rsync只传输源文件和目标文件之间不一至的部分;rsync可以执行完整备份或增量备份。
 
二、rsync的功能特性
 
1、可以镜像保存整个目录树和文件系统
2、可以增量同步数据,文件传输效率高,因而同步时间很短。
3、可以保持原来文件的权限、时间等属性
4、加密传输数据,保证了数据的安全性
5、可以使用rcp\ssh等方式来传输文件,当然也可以直接通过Socket连接传输文件
6、支持匿名传输
 
三、rsync的应用模式
 
rsync有4种应用模式:
 
第一种是shell应用模式,也称为本地shell模式,主要用于复制指定目录到另一个目录
 
第二种是远程shell模式,它利用SSH执行底层连接和加密传输,可以把指定的本地目录复制到另一个系统中
 
第三种是查询模式,与ls命令实现的功能类似。
 
第四种是服务器模式,我们一般所说的就是这种模式,这种模式是基于C/S模式,rsync的服务器模式非常适合作为异地的中心备份服务器或数据异地存储来使用。
 
 
实验
 
1、实验环境
centos 6.2 32位系统
A 系统IP地址:192.168.1.166
B 系统IP地址:192.168.1.199
 
2、实验步骤
     1、在两台服务器上都需要安装rsync包
             rsync-3.0.9.tar.gz
 
           tar zxvf rsync-3.0.9.tar.gz 
           cd rsync-3.0.9
           ./configure
           make&&make install
3、在A系统上配置rsync
      rsync的配置文件为/etc/rsyncd.conf,在安装完rsync时,默认没有这个文件,需要手动建立。rsyncd.conf文件由一个或多个模块结构组成,相应地,包括全局参数和模块参数,一个模块定义从方括弧中的模块名开始,直到下个模块的定义开始。配置完毕的内容如下:
 
uid = nobody    #指定当该模块传输文件时守护进程应该具有的用户ID,默认值是"nobady".
gid = nobody    #指定当该模块传输文件时守护进程应该具有的用户组ID,默认值是"nobady".
use chroot = no    #
max connections = 10   #指定模块的最大并发连接数量,以保护服务器。超过限制的连接请求将被暂时限制。默认值是0,即没有限制。
strict modes = yes   #指定是否检查口令文件的权限,yes为检查口令文件权限,反之为no,如果设置为yes,密码文件的权限必须为root用户权限
pid file = /var/run/rsyncd.pid  #指定rsync守护进程对应的PID文件路径
lock file = /var/run/rsyncd.lock #指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock
log file = /var/log/rsyncd.log  #指定rsync的日志输出文件路径
[ixdba]     #定义一个模块的开始,ixdba就是对应的模块名称
path = /webdata    #指定需要备份的文件或目录,是必须设置的项。这里指定的目录为/webdata.
comment = ixdba file   #
ignore errors    #表示可以忽略一些无关的I/O错误
read only = no    #设置为no表示客户端可以上传文件,设置为yes表示只读
write only = no    #设置为no表示客户端可下载文件,设置为yes表示不能下载。
hosts allow = *    #设置可以连接rsync服务器的主机,"*"表示允许连接任何主机。
hosts deny = 192.168.1.254  #设置禁止连接rsync服务器的主机地址
list = false    #此项用于设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块,可以设置为false.
uid = root    
gid = root
auth users = backup
secrets file = /etc/server.pass  #此选项用于指定一个包含“"用户名:密码"格式的文件,用户名就是"auth users"选项定义的用户,密码可以随便指定,这里设定为ixdba123,只要和客端的secrets file对应起来即可。只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。
 
创建目录及文件
mkdir /webdata
 
vim /etc/server.pass
backup:ixdba123
chmod 600 /etc/server.pass
 
4、在A 系统上启动rsync守护进程
 
/usr/local/bin/rsync --daemon
[root@localhost ~]# ps -ef | grep rsync
root      6339     1  0 00:03 ?        00:00:00 /usr/local/bin/rsync --daemon
 
5、在B系统上配置rsync
在备份机上不用做任何设置,只需执行rsync同步操作即可。为了在同步过程中不用输入密码,需要在B系统上创建一个secrets file,此文件的内容为A系统rsyncd.conf文件中“auth users”选项指定用户的密码,而这个文件的名称及路径可以随意指定,只要在执行rsync同步时指定即可。
 
vim /etc/server.pass
ixdba123
chmod 600 /etc/server.pass
 
同步操作,指令如下
/usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" backup@192.168.1.166::ixdba /ixdba.net --password-file=/etc/server.pass
 
在-vzrtopg选项中,v是--verbose,即详细模式输出;z表示--compress,即在传输时对备份的文件进行压缩处理;r表示--recursive,也就是对子目录以递归模式处理;t表示--times,用来保持文件时间信息;o表示--owner,用来保持文件属主信息;p表示--perms,用来保持文件权限;g表示--group用来保持文件的属组信息。
--delete选项指定以rsync服务器端为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致。
--progress 选项用于排除不需要传输的文件类型
--exclude选项用于排除不需要传输的文件类型
backup@192.168.1.166::ixdba 表示对服务器192.168.1.166中的ixdba模块进行备份,也就是指定备份的模块。backup表示使用backup这个用户对模块进行备份。
/ixdba.net 用于指定备份文件在客户端机器上的存放路径,也就是将备份的文件存放在备份机的/ixdba.net目录下
--password-file=/etc/server.pass 用来指定客户机上存放密码文件的位置,这样在客户端执行同步命令时就无需输入交互密码。
 
6、设置定时备份策略
crontab -e
* * * * * /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" backup@192.168.1.166::ixdba /ixdba.net --password-file=/etc/server.pass
 
通过以上步骤一个远程容灾系统已经搭建完成。
 
这时我们可在A系统的/webdata目录里创建一个文件在B系统的/ixdba.net里看是否存在。