linux下两台服务器文件实时同步方案设计和实现

转:http://blog.csdn.net/5iasp/article/details/13630927

假设有如下需求:

假设两个服务器:

192.168.0.1 源服务器  有目录 /opt/test/

192.168.0.2 目标服务器  有目录 /opt/bak/test/

实现的目的就是保持这两个服务器某个文件目录保持实时同步

实现方式: 通过rsync+inotify-tools结合来实现

需要安装软件:

1.  rsync 同步软件

在 源服务器 和 目标服务器 都需要安装

源服务器: 是rsync客户端,不需要配置

目标服务器: 是rsync服务器端,需要配置/etc/rsyncd.conf里的内容

安装后需要新建配置文件:/etc/rsyncd.conf

配置文件在: /etc/

文件内容如下:

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file= =/var/run/rsyncd.log

[www]
path= /opt/bak/test
comment= analyse
read only = false
hosts allow = *

2.  inotify-tools 工具

该工具为文件实时监控工具,需要linux操作系统内核支持,内核支持需要至少版本为2.6.13

检查操作系统是否支持,执行如下:

uname -r  查看版本

返回:

2.6.32-220.4.1.el6.x86_64

则表示版本2.6.32 大于2.6.13,则支持。

执行:

ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

有三项输出,则表示默认支持inotify,可以安装inotify-tools工具.

如果不支持,需要采用新版本的linux操作系统

版本达到要求,就可以安装了。

安装inotify-tools后会在相关安装目录下生成如下两个文件:

ll /usr/local/bin/
total 88
-rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
-rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch

则表示安装成功。

注意: 在 源服务器上需要安装,目标服务器上不需要安装inotify。

3. 相关脚本:

在源服务器上新建脚本:

inotify_bak.sh

#!/bin/bash
src=/opt/test/
/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e close_write,delete,create,attrib $src |  while read file
do
    
      /usr/bin/rsync -arzuq $src 192.168.0.2::www/

echo "  ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
done

注意: 这里的 www 是在目标服务器/etc/rsyncd.conf里配置的模块名称:[www]

赋予执行权限: chmod +x  inotify_bak.sh

然后执行: inotify_bak.sh &  放入后台执行

4. 关于启动

目标服务器:先启动rsync后台服务: /usr/bin/rsync --daemon

来源服务器: 执行 inotify_bak.sh &

5. 测试

在来源服务器目录中新建目录和文件,inotify_bak.sh脚本会检测到,然后同步到目标服务器的相关目录下

可以查看日志文件: /opt/soft/log/rsync.log 命令如下:观察实时同步的情况。

tail -f  /opt/soft/log/rsync.log

时间: 2024-10-14 10:02:23

linux下两台服务器文件实时同步方案设计和实现的相关文章

Centos 6.5 rsync+inotify 两台服务器文件实时同步

rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源服务器(192.168.1.2)的/www/目录下的所有的文件实时同步到目标服务器(192.168.1.3)的/www_bak/目录下 源服务器下需要安装rsync和inotify,源服务器做为server端,实时的向目标服务器client端发送数据 2.安装 rsync 一般centos6.5下都

Linux下 两台机器文件/文件夹 相互拷贝

设有两台机器 :A:*.101及 B:*.102. 把A下的.temp/var/a.txt拷贝到B机器的/text/目录下: 进入B机器:scp [email protected]*.101:/temp/var/a.txt /test/ 或 进入A机器:scp /temp/var/a.txt [email protected]*.102:/test/ 把A下的文件夹(含子文件夹)/temp/var/拷贝到B机器/test/目录下: 进入B机器:scp -r [email protected]*.

Linux下Rsync+Inotify-tools实现数据实时同步

说明: 一.先安装好rsync的服务端和客户端: http://douya.blog.51cto.com/6173221/1573968 二.安装,使用inotify-tools,实时同步 1.查看服务器内核是否支持inotify ll /proc/sys/fs/inotify   #列出文件目录,出现下面的内容,说明服务器内核支持inotify -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events -rw-r--r-- 1 root r

Linux下Rsync+sersync实现数据实时同步

inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个

Linux下Rsync+Inotify-tools实现数据实时同步-(转载)

说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.osyunwei.com目录实时同步到目标服务器的/home/www.osyunwei.com下 具体操作: 第一部分:分别在两台目标服务器192.168.21.127,192.168.21.128上操作 一.分别在两台在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/

rsync+inotify 实现服务器文件实时同步

rsync+inotify 实现服务器文件实时同步 操作系统:CentOS 6.X 源服务器:192.168.80.132 目标服务器:192.168.80.128 目的:把源服务器上/data/app目录实时同步到目标服务器的/data/app下 具体操作: 第一部分:在目标服务器192.168.80.128上操作 一.在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #SELINUXTYPE=targ

Linux下利用Unison实现文件双向同步

一.Unison简介Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:1.跨平台使用:2.对内核和用户权限没有特别要求:3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略:4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,

rsync+ssh+inotify实现服务器文件实时同步

如何实现两台web服务器的文件同步的,答案是rsync,但是,如何做到实时同步呢,cron已经达不到这样的要求了,同步的再快,也会有时间间隔,cron时刻执行,也会浪费系统的资源,下面,我将介绍ssh+rsync+inotify来实现两台web间的文件实时同步. 拓扑如下:  实验的linux系统为CentOS 6.5,实验之前确保开发环境已安装完毕 首先,我们介绍一下inotify,这是linux的一个新特性,在2.6的内核开始加入,它是监控文件系统,并且及时的向我们的rsync发出相关信息,

【Linux】两台服务器ssh免密登录

背景: 有些场景可能用到两台服务器ssh免密登录.比如服务器自动化部署 开始准备:  服务器A  linux   ip: 192.168.1.1 服务器B  linux  ip: 192.168.1.2 第一步: 在服务器A 上 ,使用以下命令 生成秘钥 出现冒号(:)回车即可,要按三次回车.如果出现(yes/no)输入yes ssh-keygen -t rsa 红色标注部分就是 文件保存的路径 第二步: 在服务器A上 输入命令,指向服务器B的IP地址,用root账户 ssh-copy-id -