开发者社区> 技术小甜> 正文

通过rsync实现远程容灾备份

简介:
+关注继续查看

一、rsync简介
rsync是Linux系统下的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上,rsync有如下特性:
 可以镜像保存整个目录树和文件系统
 可以增量同步数据,文件传输效率高,因而同步时间很短。
 可以保持原有文件的权限、时间等属性。
 加密传输数据,保证了数据的安全性。


二、rsync的安装与使用
 接着我们通过实例详细介绍下rsync的使用方法,这里我们假定有A、B两个Linux系统,A系统运行业务,B系统作为A的一个远程容灾备份机,那么A系统就是rsync的服务端,B系统就是rsync的客户端。需要在A、B两个系统上都安装rsync软件,这样,在A系统上运行rsync守护进程,而B系统可以通过系统守护进程crontab来定时备份A系统上指定的数据。从而实现了数据的远程容灾。
我们的安装环境为:
操作系统:Red Hat Enterprise Linux Server release 5
内核版本:Linux web 2.6.18-8.el5
A系统IP地址:192.168.60.253
B系统IP地址:192.168.60.231

1、在A、B两个系统上安装rsync


rysnc的主页地址为:http://rsync.samba.org/,我们这里下载的版本为rsync-3.0.4,接着进行编译安装:
[root@web ~]#tar zxvf rsync-3.0.4.tar.gz 
[root@web ~]#cd rsync-3.0.4
[root@web rsync-3.0.4]# ./configure
[root@web rsync-3.0.4]# make
[root@web rsync-3.0.4]# make install
这样就完成了rsync的安装。

2、在A系统上配置rsync


rsync的配置文件为/etc/rsyncd.conf,在rsync安装完毕,默认是没有这个文件的,我们手动建立一个即可。rsyncd.conf文件是由一个或多个模块结构组成。该文件有全局参数和模块参数组成,一个模块定义从方括弧中的模块名开始,直到下个模块的定义开始。配置完毕的内容如下:
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

[ixdba]
path = /webdata
comment = ixdba file
ignore errors
read only = true
list = false
uid = root
gid = root
auth users = backup
secrets file = /etc/server.pass
对上面每个选项的含义解释如下:
 uid   此选项指定当该模块传输文件时守护进程应该具有的用户ID,默认值是“nobody”。
 gid   此选项指定当该模块传输文件时守护进程应该具有的用户组ID。默认值为“nobody”。
 max connections  此选项指定模块的最大并发连接数量,以保护服务器,超过限制的连接请求,将被暂时限制。默认值是0,也就是没有限制。
 pid file 此选项用来指定rsync守护进程对应的PID文件路径。
 lock file 此选择指定支持max connections的锁文件,默认值是/var/run/rsyncd.lock。
 log file  此选项指定了rsync的日志输出文件路径。
 [ixdba] 表示定义一个模块的开始,ixdba就是对应的模块名称。
 path  此选项用来指定需要备份的文件或目录,必填项,这里指定的目录为/webdata。
 list  此选项设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true,如果需要建立隐藏的模块。可以设置为false。
 auth users 此选项用来定义可以连接该模块的用户名,多个用户用空格或逗号分隔开。需要注意的是这里的用户和Linux系统用户没有任何关系。这里指定的用户是backup。
 secrets file  此选项指定一个包含“用户名:密码”格式的文件,用户名就是“auth users”选项定义的用户,密码可以随便指定,只要和客户端的secrets file对应起来就行。只有在auth users被定义时,该文件才起作用。系统默认没有这个文件,自己手动创建一个即可。

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


执行如下指令启动rsync守护进程:
[root@web ~]# /usr/local/bin/rsync --daemon
[root@localhost /]# ps -ef|grep rsync
root     20278     1  0 16:29 ?        00:00:00 /usr/local/bin/rsync --daemon

4、在B系统上配置rsync


 在备份机上不用做任何设置,只需执行rsync同步操作即可,为了在同步过程中,不用输入密码,需要在B系统上创建一个secrets file,此文件的内容为A系统rsyncd.conf文件中“auth users”选项指定用户的密码,而这个文件的名称以及路径可以随意指定,只要在执行rsync同步时指定即可。
 接下来执行同步操作,请看如下指令:
[root@web~]# /usr/local/bin/rsync -vzrtopg --delete --progress backup@192.168.60.253::ixdba /ixdba.net  --password-file=/etc/server.pass
对这条指令中每个参数的含义介绍如下:
 “--vzrtopg”选项中v是“—verbose”,即详细模式输出,z表示“--compress” 即对备份的文件在传输时进行压缩处理,r表示“--recursive”,也就是对子目录以递归模式处理。t即“--times”,用来保持文件时间信息,o即“--owner”用来保持文件属主信息。p即“--perms”用来保持文件权限,g即“--group”用来保持文件的属组信息。
 “--delete”选项指定以rsync服务端为基准进行数据镜像同步,也就是要保持rsync服务端目录与客户端目录的完全一致性。在这里也就是以A服务器为基准进行同步。
 “--progress”选项用于显示数据镜像同步的过程。
 “backup@192.168.60.253::ixdba” 表示对服务器192.168.60.253中的ixdba模块进行备份,也就是指定备份的模块,backup表示使用“backup”这个用户对该模块进行备份。
 “/ixdba.net”用于指定备份文件在客户端机器上的存放路径,也就是将备份的文件存放在备份机的/ixdba.net目录下。
 “--password-file=/etc/server.pass”用来指定客户机上存放的密码文件位置,这样在客户端执行同步命令时就无需输入交互密码了,注意,这个密码文件的名称和位置可以随意指定,但是在客户机上必须存在此文件,文件的内容仅仅为备份用户的密码,这里指的是backup的密码。
         其实rsync作为客户端工具,提供了很多的选项和参数,这里我们仅仅给出了常用的一部分,更详细的信息请执行“man rsync”查看。
         如果配置没有错误,接下来rsync将自动去服务端(即A系统)将需要备份的数据同步到客户端(即B系统)。rsync指令在客户端执行完成数据的同步后,将自动停止,以后如果在服务端目录下有新增数据时,客户端不会自动将数据同步过去,此时,还需要再次执行rsync命令组合进行数据同步,因此,rsync方式的数据备份是需要触发同步指令才能完成。
         触发同步指令的方式有很多种,例如可以将同步指令放入客户端系统的crontab守护进程,设定同步时间,然后让Linux去触发同步指令,自动完成数据备份。这种数据备份方式可以用于数据安全性要求不是很高的业务系统上。
         细心的你可能发现了,在这种方式下,服务端和客户端的数据在两次同步的时间间隔内,可能出现不一致现象。而对于数据安全性要求极高的业务系统,这种备份方式就不能满足要求了,这些业务要求服务端和客户端的数据要做到实时同步,不过幸运的是,Linux内核提供了inotify文件系统监控机制,通过inotify与rsync的组合,完全可以做到rsync服务端和客户端数据的实时同步。
          至此,关于rsync的简单应用,我们已经做了一个简单的介绍,系统的备份与恢复是一个巨大的工程,要保证系统数据的安全性和稳定性,需要做很多方面的工作。最后,套用一句话来说明备份的重要性:“备份不是万能的,但是没有备份是万万不行的”。


















本文转自南非蚂蚁51CTO博客,原文链接: http://blog.51cto.com/ixdba/563455,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java之通过Collections.synchronizedMap创建线程安全的HashMap
Java之通过Collections.synchronizedMap创建线程安全的HashMap
62 0
Git学习-->如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
一、背景 在我之前的博客 git学习——> Gitlab如何进行备份恢复与迁移? (地址:http://blog.csdn.net/ouyang_peng/article/details/77070977) 里面已经写清楚了如何使用Gitlab自动备份功能。
1942 0
Inotify+rsync远程实时同步
安装inotify yum -y install inotify-tools 写同步脚本 Path=/data IP=172.
779 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
21361 0
03-rsync传输模式(本地传输、远程方式传输、守护进程模式传输)
1.Rsync传输模式 rsync大致使用三种主要的数据传输方式 本地方式 远程方式 守护进程 1.1.rsync语法格式 本地传输 rsync [option] src dest 远程通道传输
25 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
30426 0
从远程Oracle服务器上同步复制数据到本地备份库
create or replace PROCEDURE "SYNC_DATA_FROM_DBLINK_DB" AS BEGIN DECLARE CURSOR c_TabNames IS SELECT TNAME FROM TAB; v_TabName c_TabNames%ROWTYPE; v_SQL VARCHAR2(500); v_rowcount NUMB
1683 0
+关注
10140
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载