您的位置:首页 > 运维架构 > Linux

Centos 6.3 x86_64配置rsync

2013-04-18 17:16 288 查看
Centos 6.3 x86_64配置rsync

一,rsync简介
Rsync采用“rsync算法”使用一个客户机和远程文件服务器之间的文件同步。通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地的系统的数据通过网络传输方式备份到任何一个远程主机上,rsync可以在中断之后恢复传输,rsync只传输源文件与目标文件之间不一致的部分。
1,加密传输数据,保证了数据的安全性
2,可以保持原来文件的权限,时间等属性。
3,可以使用rcp、ssh等方式来传输文件,当然也可以直接通过socket连接传输文件
4,支持匿名传输
5,可以镜像保存整个目录树和文件系统
6,可以增量同步数据,文件传输效率高,因而同步时间很短。
二,rsync的四种模式
1,本地shell模式:主要用于复制。
# rsync -av bacula-5.2.13 /tmp/
bacula-5.2.13/updatedb/update_postgresql_tables_7_to_8
bacula-5.2.13/updatedb/update_postgresql_tables_8_to_9
bacula-5.2.13/updatedb/update_postgresql_tables_9_to_10
bacula-5.2.13/updatedb/update_postgresql_tables_9_to_10.in
bacula-5.2.13/updatedb/update_sqlite3_tables_10_to_11
bacula-5.2.13/updatedb/update_sqlite3_tables_10_to_11.in
bacula-5.2.13/updatedb/update_sqlite3_tables_11_to_12
bacula-5.2.13/updatedb/update_sqlite3_tables_11_to_12.in
bacula-5.2.13/updatedb/update_sqlite3_tables_12_to_14
# rsync -av bacula-5.2.13/ /tmp/
platforms/freebsd/
platforms/freebsd/Makefile.in
platforms/freebsd/bacula-dir.in
platforms/freebsd/bacula-fd.in
platforms/freebsd/bacula-sd.in
platforms/freebsd/pthreads-fix.txt
platforms/freebsd/tapetest.c
上面两个命令的差异,源参数末尾的斜杠,如果源参数的末尾没有斜杠,就将指定的源目录复制到指定的目的目录,如果源参数末尾有斜杠,就会复制指定源目录中的内容到目的目录中,而不是复制目录本身。
2,远程shell模式
# rsync -av bacula-5.2.13 192.168.1.29:test
如果没指定用户执行些命令,默认是以当前用户执行些命令,需要输入192.168.1.29的root密码。完成密码验证后,会在远程主机的root的用户根目录下创建test目录,然后将bacula目录及该目录下的内容复制过来。
3,rsync列表模式
在这个模式下,rsync与ls命令有些相似。以root用户身份查看远程主机192.168.1.29的test目录下的内容:
#rsync -a 192.168.1.29:test
查看本地
#rsync -a /tmp
4,c/s模式
在这种模式下,rsync在后台启用一个守护进程,这个守护进程在服务器永久运行,用于接收文件传输请求,因此,客户端既可以把文件发送给守护进程,也可以向守护进程请求文件。此种模式适合作为异地的中心备份服务器或数据异地存储。
三,远程容灾备份系统
A:服务端是web服务器,网站数据每天都会增加。需要对数据进程一个备份。IP:192.168.1.28
B:作为备份机。IP 192.168.1.29
1,在两台机器上都安装rsync,在6.3的系统已经默认安装了。如果没安装可以自己源码编译或yum -y install rsync
2,在A上配置rsync的配置文件,默认没有配置文件,需要自己建立
Rsyncd.conf文件由一个或多个模块结构组成,相应地,包括全局参数和模块参数,一个模块定义从方括号中的模块名开始,直到下个模块的定义开始。模块主要是定义服务器哪个目录要被同步。每个模块都要以[name]形式。这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要,来指定多个模块。每个模块要指定认证用户,密码文件、但排除并不是必须的;
3,在A上创建配置文件
#vim /etc/rsyncd.conf
uid=nobody
gid=nobody
port = 873
use chroot=no
max connections=10 #客户端最多连接数,默认是0,无限制
strict modes=yes #检查
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log
[backup] #定义模块
path=/data #指定需要备份的文件或目录
comment=backup file #注释可以自己定义,写什么都行,写点相关的内容就行
ignore errors #忽略IO错误,详细的请查文档
read only=no
write only=no
hosts allow =*
hosts deny=192.168.1.200 #禁止此IP连接,也可以写网段。
list=false
uid=root
gid=root
auth users=backup #认证用户
secrets file=/etc/server.pass #密码存在哪个文件;里面是用“户名:密码”格式的文件
exclude = test/ samba/ #排除/data目录下test和samba目录。
4,在A上创建密码文件
#vim /etc/server.pass
backup:123456
#chmod 600 /etc/server.pass
5,启动服务
#rsync -daemon
开机启动
#echo “rsync -daemon” >> /etc/rc.local
7,在B上创建密码文件
#vim /etc/sever.pass
123456
#chmod /etc/server.pass
8,在B上执行
#rsync -avzP --delete backup@192.168.1.28::backup /test --password-file=/etc/server.pass
--delete指定以rsync服务端为基准进行数据镜像同步,也就是要保持服务端与客户端目录的完全一到处。

backup@192.168.1.28::backup 表示对backup模块进行备份,前面的backup表示用户,使用这个用户对该模块进行备份。

9,设置定时备份策略
30 3 * * * rsync -avzP --delete backup@192.168.1.28::backup /test --password-file=/etc/server.pass
到此结束
Rsync优点:定期备份实时性不高的数据。一般文件服务器数据
缺点:如果文件数据过大时,扫描所有文件后进行对比,非常耗时。有时发生变化的文件往往是很少的一部分。因此rsync是非常低效的,其次不能实时监测,同步数据。为了解决这个问题出现rsync+inotify组合,下一篇讲解rsync+inotify。
本文出自 “damon” 博客,请务必保留此出处http://damondeng.blog.51cto.com/1038075/1180876
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: