近期由于业务需要,需要将两台服务器数据保持同步。方案有很多,rsync是其中一种解决方案,本文对rsync的安装及配置进行简单说明,其他实现方式有兴趣可以研究。以下是本文提纲,供参考:

  • rsync安装篇
  • rsync配置篇(服务器端&客户端)
  • 使用方法简介

一、rsync安装篇

    rsync的安装于其他linux应用安装方法相同,在centos系统,可通过以下命令安装

  1. yum install rsync

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }   

    对于debian、ubuntu服务器,可使用以下命令:

  1. sudo apt-get install rsyn

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    安装完成后可使用命令rsync进行测试,如安装成功,会有以下提示:

 

二、rsync配置篇(服务器端&客户端)

    rsync服务器端可以理解为需要备份同步的主服务器,客户端可以理解为数据同步目标服务器。

    1、rsync服务器端配置:

        rsync服务器端正常运行需要三个配置文件:rsyncd.conf、rsyncd.secrets和rsyncd.motd,软件安装完成后默认是没有这三个配置文件的,需要手动创建,我们通过以下命令,创建相关目录及文件:

  1. mkdir /etc/rsyncd/
  2.  
  3. touch /etc/rsyncd/rsyncd.conf
  4. touch /etc/rsyncd/rsyncd.secrets
  5. touch /etc/rsyncd/rsyncd.motd
  6.  
  7. chmod 600 /etc/rsyncd/rsyncd.secrets

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }    首先创建配置文件存放目录,这里使用/etc/rsyncd,之后建立三个配置文件。其中rsyncd.secrets为用户及密码存放文件,为了密码的安全性,我们把权限设为600。

    rsyncd.conf是rsync服务器的主要配置文件,配置信息基本都在此文件包含。rsyncd.secrets为用户及密码存放文件。rsyncd.motd 存放客户端登陆后的欢迎提示信息(好纠结)。

    下面为三个配置文件写入配置信息。

    rsyncd.conf 配置文件主要信息如下

  1. #Minimal configuration file for rsync daemon
  2. # See rsync(1) and rsyncd.conf(5) man pages for help
  3.  
  4. # This line is required by the /etc/init.d/rsyncd script
  5. pid file=/var/run/rsyncd.pid
  6. port=10086
  7. address=192.168.162.9
  8. #uid = nobody
  9. #gid = nobody
  10. uid=root
  11. gid=root
  12.  
  13. use chroot=yes
  14. read only=no
  15.  
  16. #limit access to private LANs
  17. hosts allow=192.168.162.127
  18. hosts deny=*
  19.  
  20. max connections = 5
  21. motd file = /etc/rsyncd/rsyncd.motd
  22.  
  23. #This will give you a separate log file
  24. #log file = /var/log/rsync.log
  25.  
  26. #This will log every file transferred - up to 85,000+ per user, per sync
  27. #transfer logging = yes
  28.  
  29. log format = %t %a %m %f %b
  30. syslog facility = local3
  31. timeout = 300
  32.  
  33. [config_m]
  34. path=/usr/local/config_m
  35. auth users=sunguangran
  36. secrets file=/etc/rsyncd/rsyncd.secrets
  37.  
  38. [jboss_home]
  39. path=/usr/local/jboss-as-7.1.0.Final
  40. exclude=/usr/local/jboss-as-7.1.0.Final/standalone/tmp
  41. auth users=sunguangran
  42. secrets file=/etc/rsyncd/rsyncd.secrets

    密码文件 rsyncd.secrets 的内容格式:

  1. sunguangran:000000

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    rsyncd.motd 文件内容可以随便写,用于在客户端登陆服务后显示的欢迎文字。

    rsyncd.conf 配置项较多,具体配置可google   rsync配置项说明,没google知道的多,这里就不多说了 哈

    此外,需要在服务器端开通相应端口的防火墙,以便客户端能够访问到服务。

 

三、使用方法简介

  1. 服务器端

        上述三个配置文件准备好后,在服务器执行以下脚本,启动rsync服务:

  1. /usr/bin/rsync daemon --config=/etc/rsyncd/rsyncd.conf

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }    

    2、客户端

        客户端通过以下脚本同步数据:

  1. /usr/bin/rsync -avzP --delete --port 10086 sunguangran@192.168.162.9::config_m /usr/local/config_m

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }         注: 这个命令的意思就是说,用sunguangran用户登录到服务器上,把config_m(服务器配置节点名称)数据,同步到本地目录/usr/local/config_m上。当然本地的目录是可以你自己定义的。当你在客户端上,当前操作的目录下没有/usr/local/config_m这个目录时,系统会自动为你创建一个;当存在该目录中,要注意它的写权限。

        使用这种方式进行同步是,在链接服务器成功后,需要手动个输入密码。我们期望做成系统定时任务,定期同步数据,可以使用以下方式,将密码从文件中读取。

    我们加一个选项 --password-file=/etc/rsyncd/rsyncd.secrets,这是当我们以sunguangran用户登录rsync服务器同步数据时,密码将读取 rsyncd.secrets 这个文件。这个文件内容只是sunguangran用户的密码。我们要如下做:

  1. touch rsyncd.secrets
  2. chmod 600 rsyncd.secrets
  3. echo "000000"> rsyncd.secrets
  4. rsync -avzP --delete --port 10086 --password-file=/etc/rsyncd/rsyncd.secrets sunguangran@192.168.162.9::config_m /usr/local/config_m

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    这样就不需要手动输入密码文件了,可以手动将需要同步的目录写成shell脚本,做成系统定时任务。

    新建一个文件 rsync_task.sh,加入以下两行代码:

  1. /usr/bin/rsync -avzP --delete --port 10086 --password-file=/etc/rsyncd/rsyncd.secrets sunguangran@192.168.162.9::config_m /usr/local/config_m
  2. /usr/bin/rsync -avzP --delete --port 10086 --password-file=/etc/rsyncd/rsyncd.secrets sunguangran@192.168.162.9::jboss_home /usr/local/jboss-as-7.1.0.Final

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    建立系统定时任务,输入crontab -e,输入以下内容:

  1. 0,30 * * * * /etc/rsyncd/rsync_task.sh

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    保存退出,客户端服务器每个小时的0分和30分时都会自动运行一次rsync_task.sh

    rsync除了同步文件及目录之外,还可以利用它来实现对远程网站的远程备份。如果再结合脚本和Crontab就能实现定时自动远程备份。其可以实现与商业化的备份和镜象产品的类似效果,但完全免费。

 

    本文主要针对环境搭建及实现进行了简单说明,如果对其中具体配置项意义感兴趣,可进行查询,这里不做赘述。

rsync服务架设(数据同步|文件增量备份)的更多相关文章

  1. 配置rsync服务,数据同步。

    这部分设计服务器端和客户端. [服务器端] 如果服务器没有安装rsync服务则使用yum安装rsync服务. yum install rsync 然后 vim /etc/xinetd.d/rsync ...

  2. rsync与inotify 数据同步

    发布:thebaby   来源:脚本学堂     [大 中 小] 本文介绍下,在linux系统中,使用rsync与inotify实现数据同步的一个实例,有研究文件同步的朋友可以作个参考.本文转自:ht ...

  3. rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战   rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...

  4. rsync+inotify实时数据同步多目录实战

    rsync+inotify实时数据同步多目录实战       inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...

  5. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  6. 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...

  7. mysql 主从同步 实现增量备份

    数据库复制 replication 的实现原理 1:主服务器凡运行语句,都产生一个二进制日志 binlog 2:从服务器不断读取主服务器的binlog 3:从主服务读取到的binlog,转换为自身可执 ...

  8. 微服务之数据同步Porter

    Porter是一款数据同步中间件,主要用于解决同构/异构数据库之间的表级别数据同步问题. 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系,不像传统多个服务共享一个数据库,微服务架构下每个服 ...

  9. Linux学习系列之Inotify+Rsync实现实时数据同步

    Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...

随机推荐

  1. liunx安装qq

    http://www.07net01.com/电脑玩物 http://www.07net01.com/2014/09/68186.html 安装qq 一开始,我在ubuntu14.04下安装的QQ版本 ...

  2. Delphi 自带的那个 Hand 光标很难看?没关系,一行代码解决问题:

    Delphi 自带的那个 Hand 光标很难看?没关系,一行代码解决问题: Screen.Cursors[crHandPoint] := LoadCursor(0, IDC_HAND);放在主窗体 O ...

  3. Andorid-如何为你的Android应用缩放图片

    很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...

  4. “FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”。如果是有意隐藏,请使用关键字 new。

    一旦运行就显示:“FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”.如果是有意隐藏,请使用关键字 ne ...

  5. kettle实现文本文件数据抽取方法

    KETTLE做调度的思路是,把一个有特定格式的的文本文件,写入ORACLE数据库表, 具体方法见如下操作: 首先来看下文本文件的内容: 1|test1 2|test2 3|test3 通过|进行分割的 ...

  6. window下版本控制工具Git 客户端安装

    安装使用 1.下载msysgit http://code.google.com/p/msysgit/ 2.下载tortoisegit客户端安装 http://code.google.com/p/tor ...

  7. Android控件之GridView

    GridView是一项显示二维的viewgroup,可滚动的网格.一般用来显示多张图片. 以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接. 目录结构 main.xml布局文件,存放Grid ...

  8. [LeetCode] Container With Most Water 简要分析

    前言 这题非要说贪心的话也算是吧,不过最主要的特征还是双指针.LC的题好像不少都是扔倆头尾指针然后遍历一遍完事儿的.这道题倒是“短板效应”的不错体现了. 题目 题目链接 Given n non-neg ...

  9. Kindle Paperwhite 2使用体验

    博客开通后一懒就扔下了几十天,着实自惭.鉴于是第一篇,先说点题外话. 一转眼读研的生活已经过去一年有余.曾经的同学已经在职场拼搏,同龄人的生活状态也自然地带给自己一份紧迫感:不敢再贪恋校园生活的安逸, ...

  10. 判断线段和直线相交 POJ 3304

    // 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...