通过rsync实现远程容灾备份

rsync同步操作

 

一、rsync简介

rsyncLinux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。

 

二、rsync的安装

我们假定有AB两个Linux系统,A系统运行业务,B系统作为A的一个远程容灾备份机,那么A系统就是rsync的服务端,B系统就是rsync的客户端。需要在AB两个系统上都安装rsync软件,这样,在A系统上运行rsync守护进程,而B系统可以通过系统守护进程crontab来定时备份A系统上指定的数据。从而实现了数据的远程容灾。

假设我们的安装环境为:

A系统IP地址:172.30.25.244

B系统IP地址:172.30.25.245

红色字体:需要视实际情况进行修改

 

1、在AB两个系统上都安装rsync

方法A:系统包安装(系统默认已经安装,推荐这种方式,本例采用系统包)

yum install rsync

 

方法B:源码安装

我们这里下载的版本为rsync-3.1.0(http://rsync.samba.org/ftp/rsync/src/rsync-3.1.0.tar.gz)

接着进行编译安装:

[root@web ~]#tar zxvf rsync-3.1.0.tar.gz

[root@web ~]#cd rsync-3.1.0

[root@web rsync-3.1.0]# ./configure --prefix=/usr/local/rsync

[root@web rsync-3.1.0]# make

[root@web rsync-3.1.0]# make install

这样就完成了rsync的安装。

 

三、rsync的配置

1、在A系统上配置rsync

1.1rsync的配置文件为/etc/rsyncd.conf,在rsync安装完毕,默认是没有这个文件的,我们手动建立一个即可。配置完毕的内容如下:

[global]

uid = nobody

gid = nobody

use chroot = no

max connections = 10

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

log format = %t %a %m %f %b

 

[backup]

path = /usr/local/appstore/datarsync

comment = backup appstore file

ignore errors

read only = no

write only = no

list = no

auth users = rsync_user

secrets file = /etc/rsyncd.secret

对上面每个选项的含义解释如下:
 uid   此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认值是“nobody”。
 gid   此选项指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为“nobody”。
 max connections  此选项指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制。
 pid file 此选项用来指定rsync守护进程对应的PID文件路径。
 lock file 此选择指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock
 log file  此选项指定了rsync的日志输出文件路径。

log format 此项指定了日志的格式    %t 当前时间 %a 远程IP地址 %m 模块名 %f 文件名 %b 实际传输的字节数 %u用户名
 [backup] 表示定义一个模块的开始,backup就是对应的模块名称。
 path  此选项用来指定需要备份的文件或目录,要求必须存在。

comment 此选项指定名称,随便填

ignore errors忽略一些无关的IO错误

read only 客户端可上传文件,yes只读

write only 客户端可下载文件,yes不能下载
 list  此选项设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false
 auth users 此选项用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。需要注意的是这里的用户和Linux系统用户没有任何关系。
 secrets file  此选项指定一个包含“用户名:密码”格式的文件,用户名就是“auth users”选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。

 

 

 

1.2设置rsync服务器端同步密钥(密码请设复杂点)

vi /etc/rsyncd.secret

 

rsync_user:rsyncpass

 

设置rsync服务器端同步目录权限:

chmod 600 /etc/rsyncd.secret

chmod 777 /usr/local/appstore/datarsync -R

 

1.3、在A系统上启动rsync守护进程

执行如下指令启动rsync守护进程:

[root@web ~]# rsync --daemon

 

查看是不是启动成功:

[root@localhost /]# ps -ef|grep rsync

root     20278     1  0 16:29 ?        00:00:00 /usr/local/bin/rsync --daemon

 

1.4、将rsync加入开机启动

 [root@web ~]# echo "/usr/bin/rsync --daemon" >> /etc/rc.local

 

2、在B系统上配置rsync

2.1在备份机上不用做任何设置,只需执行rsync同步操作即可,为了在同步过程中,不用输入密码,需要在B系统上创建一个secrets file,此文件的内容为A系统rsyncd.conf文件中“auth users”选项指定用户的密码。

[root@web~]# echo rsyncpass > /etc/rsyncd.secret

[root@web~]# chmod 600  /etc/rsyncd.secret

 

2.2接下来执行同步操作,请看如下指令能否执行成功:

[root@web~]# /usr/bin/rsync -vzrtopg --progress rsync_user@172.30.25.244::backup /usr/local/appstore/datarsync  --password-file=/etc/rsyncd.secret

对这条指令中每个参数的含义介绍如下:

--vzrtopg”选项中v是“—verbose”,即详细模式输出,z表示“--compress 即对备份的文件在传输时进行压缩处理,r表示“--recursive”,也就是对子目录以递归模式处理。t即“--times”,用来保持文件时间信息,o即“--owner”用来保持文件属主信息。p即“--perms”用来保持文件权限,g即“--group”用来保持文件的属组信息。

--delete”选项指定以rsync服务端为基准进行数据镜像同步,也就是要保持rsync服务端目录与客户端目录的完全一致性。在这里也就是以A服务器为基准进行同步。

--progress”选项用于显示数据镜像同步的过程。

[email protected]::backup 表示对服务器192.168.60.101中的backup模块进行备份,也就是指定备份的模块,www表示使用“rsync_user”这个用户对该模块进行备份。

/usr/local/appstore/datarsync”用于指定备份文件在客户端机器上的存放路径,也就是将备份的文件存放在备份机的/backup.net目录下。

--password-file=/etc/rsyncd.secret”用来指定客户机上存放的密码文件位置,这样在客户端执行同步命令时就无需输入交互密码了,注意,这个密码文件的名称和位置可以随意指定,但是在客户机上必须存在此文件,文件的内容仅仅为备份用户的密码,这里指的是rsync_user的密码。

 

2.3如果能够执行成功,创建一个脚本文件:

[root@web~]# vi appstore_rsync.sh

#/bin/sh

/usr/bin/rsync -vzrtopg --progress --password-file=/etc/rsyncd.secret rsync_user@172.30.25.244::backup /usr/local/appstore/datarsync

 

将脚本文件加入crontab定时执行(假设脚本是放在/usr/local/appstore/bin):

[root@web~]# crontab -e

*/1 * * * * sh  /usr/local/appstore/bin/appstore_rsync.sh

 

猜你喜欢

转载自kolenxiao.iteye.com/blog/2032728