Rsync实现异地数据镜像的简单配置

上一篇文章中, 介绍了Linux下的双击热备(drbd+heartbeat), 但是这种热备方式只能解决在同一机房中实现高可用的问题, 并不能解决在极端情况下(如因为地震、大规模断电导致机房坍塌)的容灾备份问题。这篇文章简介如何使用rsync实现异地数据备份。

相关阅读:CentOS 6.3下heartbeat+drbd的安装和配置

介绍rsync

Rsync是unix下常用的远程镜像备份工具, 从软件名上看出其意思就是remote sync(远程同步)。它可以镜像的保存整个目录树的数据和所有的元数据信息。Rsync是运行在C/S模式下的一种软件, 其中, 客户端使用pull操作从服务器上取文件, 或使用push操作将文件推送到服务器。 服务器端使用sshd服务,或者启动rsync服务, 接收并处理客户端的请求。常用的镜像备份中使用rsync服务, 因为rsync备份可以实现数据的增量传输, 减少对网络带宽的需求。

安装Rsync

CentOS 6.3 自带了 rsync的rpm包, 使用 yum install rsync –y 在服务器端和客户端同时安装即可。

Rsync服务端的配置和使用

下面介绍服务器端rsync服务的配置, 更详细的使用配置请参考man手册 rsyncd.conf(5)。

首先在全局定义了rsync程序以root用户和组权限运行, 最多只能有5个并发连接。并且定义了进程号文件,锁文件和日志文件的位置。接着定义[data]模块, 模块名在之后客户端进行连接时会指定客户端名。 定义该模块在/data目录下, 并且忽略错误,只允许192.168.10.153这个IP连接到该模块。 Strict modes = false的意思密码文件/etc/rsyncd.secrets的文件权限没必要为600,  可以是644或其他。配置好之后, 使用rsync –daemon命令以守护模式在服务端启动rsync, 为了保证服务器重启后rsync服务仍然能正常启动, 故修改/etc/rc.local文件如下:

[root@ha1 ~]# cat /etc/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

rsync --daemon

[root@ha1 ~]#

客户端的配置和使用

客户端使用rsync命令, 定时同步数据。 在/etc/cron.daily目录下, 编写脚本rsync.sh如下:

rsync --archive --verbose --compress --recursive --times --owner --group --perms  --delete --progress --password-file=/etc/rsync.password rsync://rsync@192.168.10.150/data /data

--archive表示保存同步的文件的软硬属性

--verbose表示弹出更多的信息

--compress表示传输过程中,先压缩数据再传输

--recursive 表示递归地传输目录树

--times --owner --group --perms表示保留文件的时间,所有者,所属组,和权限属性

--delete 表示如果镜像源删除了该文件,则做镜像时也删除相应的文件

--progress 表示显示同步进度

--password-file 表示密码保存的地方,在服务器端,刚才定义了rsync帐号的密码为rsync

所以相应的, 在客户端保存rynsc帐号的密码文件中的密码为rsync, 最后, 指定镜像源为192.168.10.150 的data模块, 复制到本地的/data目录。该脚本由于放在了/etc/cron.daily目录下, 故每晚0点自动同步一次。 更个性化的定制, 可以修改/etc/crontab文件实现。

这样, 就通过rsync,做好了镜像同步。 镜像数据 比 实际数据相差1天。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/bd64e12855abadfd7887a1e514674b0f.html