Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

rsync的优点:

①可以镜像保存整个目录树和文件系统;
②可以很容易做到保持原来文件的权限、时间、软硬链接等;
③无须特殊权限即可安装;
④优化的流程,文件传输效率高;
⑤可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;
⑥支持匿名传输
 
来自高俊锋大大的book
案例描述:
某电子商务网站,web服务器的位linux,网站数据每天都在变更,为了保证数据安全,需要建立一个远程容灾系统,将网站数据在每天凌晨330分备份到远程的容灾服务器上。由于数据量很大,每天只能进行增量备份
解决方案:
假定网站服务器为A服务器,rsync服务器为B服务器,B作为A的远程容灾备份。
需要在AB两个系统上都安装rsync软件,这样,在A系统上运行rsync守护进程
而在B系统上可以通过系统守护进程crontab来定时备份由A系统指定的数据,从而实现数据的远程容灾。
系统环境:
   Centos 5  内核2.6.18
   A: 192.168.12.253
   B: 192.168.12.231
----------------------------------------
步骤一、分别在两台服务器上安装rsync
       #tar zxvf rsync-*
       #cd rsync*
       # ./configure  && make && make install
 --------------------------------------
步骤二、在A系统上配置rsync
配置文件:/etc/rsync.conf  需要手动建立。
rsync.conf文件有一个或多个模块结构组成,相应的,包括全局参数和模块参数,
一个模块定义从方括弧中的模块名开始,直到下个模块定义开始。
具体配置如下:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[xxwg]
path = /test
comment = xxwg file
ignore errors
read only = no
write only = no
hosts allow = *
hosts deny = 192.168.12.100
list = false
uid = root
gid = root
auth users = backup    #注:此账号只是用来传输上的验证,并不需要在系统里新建账号
secrets file =  /etc/server.pass
其中,/etc/server.pass内容如下:(server.pass 文件保持属主的600权限
backup123456
启动rsync守护进程
#/usr/local/bin/rsync  --daemon
# ps -ef | grep rsync
--------------------------------------------
步骤三:在B系统上安装配置rsync
在备份机上不用做任何设置,只需要执行rsync同步操作即可。
为了在同步过程中不用输入密码,需要在B系统上创建一个secrets file,此文件的内容为A系统rsyncd.conf文件中 auth users 选项指定用户的密码,路径随意,只需在执行rsync同步时指定即可。
同步命令如下:
这里要注意参数b,在一些资源性备份中,如图片,视频,文档等,应该加上,否则如果源硬盘数据损坏,就可能导致备份上的数据消失。后果很严重!!!
# /usr/local/bin/rsync  -vzrtopg  --delete  --progress  --exclude "*access*"  --exclude "debug"  backup@192.168.12.253::xxwg  /test  --password-file=/etc/server.pass
注:此文件权限亦为600
---------------------------------------------
步骤四:设置定时备份策略
设定客户端rsync在每天凌晨330分执行镜像备份操作
30 3 * * * /usr/local/bin/rsync  -vzrtopg  --delete  --progress  --exclude "*access*"  --exclude "debug"  backup@192.168.12.253::xxwg  /test  --password-file=/etc/server.pass
提交crontab文件即可。
------------------------------------------
步骤五:查看定时备份执行情况
  1.  linux
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察
2.  unix
在 /var/spool/cron/tmp文件中,有croutXXX001864tmp文件,tail 这些文件就可以看到正在执行的任务了。
3. mail任务
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。