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

rsync的优点:

①可以镜像保存整个目录树和文件系统;
②可以很容易做到保持原来文件的权限、时间、软硬链接等;
③无须特殊权限即可安装;
④优化的流程,文件传输效率高;
⑤可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接;
⑥支持匿名传输
 
来自高俊锋大大的book
案例描述: <?xml:namespace prefix = o />

某电子商务网站,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执行情况。