通过rsync+inotify实现文件的实时备份同步

原文参考:http://ixdba.blog.51cto.com/2895551/580280/

http://www.bamaol.com/Psy/Showposts-010000108-5048.html

一,rsync安装

目前rsync的最新版本是3.0.9

wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz

tar-xvzfrsync-3.0.9.tar.gz;cdrsync-3.0.9;

./configure;make;makeinstall

rsync服务器端配置

1.

vi /etc/rsyncd.conf(需要手动生成)

rsyncd.conf的参数写在上边就是全局参数和写在模块里的就是模块参数

#运行RSYNC守护进程的用户

uid = root

#运行RSYNC守护进程的组

gid = root

#不使用chroot

use chroot = no

#最大连接数是4

max connections = 4

#pid文件存放位置

pidfile=/var/run/rsyncd.pid

#锁文件存放位置

lockfile=/var/run/rsync.lock

#日志文件存放位置

logfile=/var/log/rsyncd.log

[logs]

#要同步的目录

path =/usr/local/lnmp

#忽略无关的IO错误

ignore errors

#只读,不能上传

readonly =true

#禁止查看文件列表

list =false

#允许访问服务的ip

#hosts allow = 192.168.1.200

#禁止访问服务的ip

#hosts deny = 0.0.0.0/32

#认证的用户名,系统必须存在的用户,但是密码需要在secrets file 配置,不是系统的密码。

authusers= root

#认证用户密码文件,配置auth users的密码

secretsfile=/etc/backserver.pas

2.

rsync密码文件是以冒号分隔的明文。

每个用户一行,前面是用户名,后面是密码,用户需要是操作系统存在的用户。

该文件的所有者必须是root,权限是600。

vi /etc/backserver.pas,添加

root:123456

保存并退出后执行

chownroot:root/etc/backserver.pas

chmod600/etc/backserver.pas

3.

启动rsync服务

/usr/local/bin/rsync--daemon

4.

检查进程是否存在,

ps-aux |greprsync

root      4406  0.0  0.0   4228   588 ?        Ss   May14   0:00/usr/local/bin/rsync--daemon

netstat-an |grep873

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN

出现以上结果,表明rsync服务器端已经启动。

5.

打开防火墙

iptables -i INPUT -p tcp --dport 873 -j ACCEPT

iptables -L

结果如下

Chain INPUT (policy ACCEPT)

target prot opt source destination

ACCEPT tcp -- anywhere anywhere tcp dpt:rsync

6.

结束进程:kill -9 pid的值

kill -15 进程名

7.

rsync开机启动

echo "/usr/bin/rsync --daemon" >> /etc/rc.local

(开机自动启动rsync服务)

注意事项

1) 提示密码文件不能读,需要手工输入密码时,可能就是密码文件权限不是600,或者格式不对,或者是路径不对。

2) 提示要创建新目录或文件传输失败时,可能是欲同步的目录没有权限,最好把欲同步的目录权限修改为744。

3) 从客户端同步文件到服务端时,最好单个文件目录传输,否则易出错。

rsync客户端配置

1.

客户端不用配置,直接使用rsync命令就可以,

rsync -vzrtopg --progress --delete [email protected]::logs /data/lnmp

2.

如果想rsync无密码登陆,客户端只要配置密码文件即可。

vim /etc/rsyncd.secretes ,这个文件只包含服务器端auth user的密码,不需要配置用户名

123456

chmod 600 rsyncd.secretes (密码文件权限为600,此步必须设置)

注:此处密码一定要与rsync服务器端密码文件中密码保持一致。并且应为rsync客户端密码。

rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes [email protected]::logs /data/lnmp

注:上述命令是指把服务端的这个路径(/usr/local/lnmp)下的文件同步到客户端的这个路径(/data/lnmp)下。

若想反过来,把客户端的文件同步到服务端,则为如下:

rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes /data/lnmp [email protected]::logs

3.

rsync定时任务

早上四点执行rsync备份

crontab -e

00 04 * * * rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd.secretes [email protected]::logs /data/lnmp

4.

Rsync 同步参数说明

-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。

--progress是指显示出详细的进度情况

--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除

[email protected]中的root是指定密码文件中的用户名,xxx为ip地址

logs是指在rsyncd.conf里定义的模块名

/data/lnmp 是指本地要备份目录

5.

rsync常用参数:

#rsync [option] 源路径 目标路径

其中[option]为:

a:使用archive模式,等于-rlptgoD,即保持原有的文件权限

z:表示传输时压缩数据

v:显示到屏幕中

e:使用远程shell程序(可以使用rsh或ssh)

–delete:精确保存副本,源主机删除的文件,目标主机也会同步删除

–include=PATTERN:不排除符合PATTERN的文件或目录

–exclude=PATTERN:排除所有符合PATTERN的文件或目录

–password-file:指定用于rsync服务器的用户验证密码

--------------------------------------------------------

rsync常见错误排错

1.

rsync: failed to connect to 118.244.216.177: No route to host (113)

rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]

原因:防火墙屏蔽了端口

解决:打开873段考

iptables -i INPUT -p tcp --dport 873 -j ACCEPT

iptables -L

如果以上指令不行,可以直接停掉防火墙

/etc/init.d/iptables stop

2.

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

那估计是密码文件没有设置权限哦: chmod 600 /home/admin/security/rsync.pass

应该差不多就可以了

[email protected]: auth failed on module xxxxx

rsync: connection unexpectedly closed (90 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

这是因为密码设错了, 无法登入成功, 请检查一下 rsyncd.scrt 中的密码, 二端是否一致?

4.password file must not be other-accessible

continuing without password file

Password:

这表示 rsyncd.scrt 的档案权限属性不对, 应设为 600。

[email protected]: chroot failed

rsync: connection unexpectedly closed (75 bytes read so far)

rsync error: error in rsync protocol data stream (code 12) at io.c(150)

这通常是您的 rsyncd.conf 中的 path 路径所设的那个目录并不存在所致.请先用 mkdir开设好要备份目录

[email protected]: access denied to www from unknown (192.168.1.123)

rsync: connection unexpectedly closed (0 bytes received so far) [receiver]

rsync error: error in rsync protocol data stream (code 12) at io.c(359)

最后原因终于找到了。因为有两个网段都需要同步该文件夹内容,但没有在hosts allow 后面添加另一个IP段

hosts allow = 192.168.1.0/24

改为

hosts allow = 192.168.1.0/24 192.168.2.0/24

重新启动rsync服务,问题解决

[email protected]: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

client端没有设置/etc/rsync.pas这个文件,而在使用rsync命令的时候,加了这个参数--password-file=/etc/rsync.scrt

8.rsync: recv_generator: mkdir "/teacherclubBackup/rsync……" failed: No space left on device (28)

*** Skipping any contents from this failed directory ***

磁盘空间满了

9.rsync: opendir "/kexue" (in dtsChannel) failed: Permission denied (13)

同步目录的权限设置不对,改为755

10.rsync: read error: Connection reset by peer (104)

rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.5]

未启动xinetd守护进程

[[email protected] /]# service xinetd start

11.rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory

xnetid查找的配置文件位置默认是/etc下,在/etc下找不到rsyncd.conf文件

12.rsync: failed to connect to 203.100.192.66: Connection timed out (110)

rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]

连接服务器超时,检查服务器的端口netstat –tunlp,远程telnet测试

13.我需要在防火墙上开放哪些端口以适应rsync?

视情况而定。rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口:

rsync --port 8730 otherhost::

或者

rsync -e ‘ssh -p 2002‘ otherhost:

14.我如何通过rsync只复制目录结构,忽略掉文件呢?

rsync -av --include ‘*/‘ --exclude ‘*‘ source-dir dest-dir

15.为什么我总会出现"Read-only file system"的错误呢?

看看是否忘了设"read only = no"了

[email protected]: chroot failed

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器端的目录不存在或无权限。创建目录并修正权限可解决问题。

[email protected]: auth failed on module tee

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。提供正确的用户名密码解决此问题。

[email protected]: Unknown module ‘tee_nonexists’

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。

19.权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)

二,rsync+inotify实现数据的实时备份

在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份。

一、rsync的优点与不足

与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

二、 初识inotify

Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。

在上面章节中,我们讲到,rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样刚好解决了同步数据的实时性问题。

三、 安装inotify工具inotify-tools

由于inotify特性需要Linux内核的支持,在安装inotify-tools前要先确认Linux系统内核是否达到了2.6.13以上,如果Linux内核低于2.6.13版本,就需要重新编译内核加入inotify的支持,也可以用如下方法判断,内核是否支持inotify:

[[email protected] webdata]# uname -r

2.6.18-164.11.1.el5PAE

[[email protected] webdata]# ll /proc/sys/fs/inotify

总计 0

-rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events

-rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances

-rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches

如果有上面三项输出,表示系统已经默认支持inotify,接着就可以开始安装inotify-tools了。

可以到http://inotify-tools.sourceforge.net/下载相应的inotify-tools版本,然后开始编译安装:

[[email protected]  ~]# tar zxvf inotify-tools-3.14.tar.gz

[email protected]  ~]# cd inotify-tools-3.14

[[email protected] inotify-tools-3.14]# ./configure

[[email protected] inotify-tools-3.14]# make

[[email protected] inotify-tools-3.14]# make install

[[email protected] inotify-tools-3.14]# ll /usr/local/bin/inotifywa*

-rwxr-xr-x 1 root root 37264 04-14 13:42 /usr/local/bin/inotifywait

-rwxr-xr-x 1 root root 35438 04-14 13:42 /usr/local/bin/inotifywatch

inotify-tools安装完成后,会生成inotifywait和inotifywatch两个指令,其中,inotifywait用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。

inotifywatch用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息。

四、 inotify相关参数

inotify定义了下列的接口参数,可以用来限制inotify消耗kernel memory的大小。由于这些参数都是内存参数,因此,可以根据应用需求,实时的调节其大小。下面分别做简单介绍。

/proc/sys/fs/inotify/max_queued_evnets

表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。

/proc/sys/fs/inotify/max_user_instances

表示每一个real user ID可创建的inotify instatnces的数量上限。

/proc/sys/fs/inotify/max_user_watches

表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小,例如:

echo 30000000 > /proc/sys/fs/inotify/max_user_watches

五、 inotifywait相关参数

Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面介绍一下常用的一些参数:

 -m, 即--monitor,表示始终保持事件监听状态。

 -r, 即--recursive,表示递归查询目录。

 -q, 即--quiet,表示打印出监控事件。

 -e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。

更详细的请参看man  inotifywait。

六、 rsync+inotify企业应用案例

案例描述

这是一个CMS内容发布系统,后端采用负载均衡集群部署方案,有一个负载调度节点和三个服务节点以及一个内容发布节点构成,内容发布节点负责将用户发布的数据生成静态页面,同时将静态网页传输到三台服务节点,而负载调度节点负责将用户请求根据负载算法调度到相应的服务节点,实现用户访问。用户要求在前端访问到的网页数据始终是最新的、一致的。

解决方案

为了保证用户访问到的数据一致性和实时性,必须保证三个服务节点与内容发布节点的数据始终是一致的,这就需要通过文件同步工具来实现,这里采用rsync,同时又要保证数据是实时的,这就需要inotify,即:使用inotify监视内容发布节点文件的变化,如果文件有变动,那么就启动rsync,将文件实时同步到三个服务节点。

系统环境

这里所有服务器均采用Linux操作系统,系统内核版本与节点信息如表1 所示:

表1

1 安装rsync与inotify-tools

inotify-tools是用来监控文件系统变化的工具,因此必须安装在内容发布节点,服务节点无需安装inotify-tools,另外需要在web1、web2、web3、webserver节点上安装rsync,由于安装非常简单,这里不在讲述。

在这个案例中,内容发布节点(即server)充当了rsync客户端的角色,而三个服务节点充当了rsync服务器端的角色,整个数据同步的过程,其实就是一个从客户端向服务端推送数据的过程。这点与上面我们讲述的案例刚好相反。

2 在三个服务节点配置rsync

这里给出三个服务节点的rsync配置文件,以供参考,读者可根据实际情况自行修改。

Web1节点rsyncd.conf配置如下:

uid = nobody

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[web1]

path = /web1/wwwroot/

comment = web1 file

ignore errors

read only = no

write only = no

hosts allow = 192.168.12.134

hosts deny = *

list = false

uid = root

gid = root

auth users = web1user

secrets file = /etc/web1.pass

Web2节点rsyncd.conf配置如下:

uid = nobody

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[web2]

path = /web2/wwwroot/

comment = web2 file

ignore errors

read only = no

write only = no

hosts allow = 192.168.12.134

hosts deny = *

list = false

uid = root

gid = root

auth users = web2user

secrets file = /etc/web2.pass

Web3节点rsyncd.conf配置如下:

uid = nobody

gid = nobody

use chroot = no

max connections = 10

strict modes = yes

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[web3]

path = /web3/wwwroot/

comment = web3 file

ignore errors

read only = no

write only = no

hosts allow = 192.168.12.134

hosts deny = *

list = false

uid = root

gid = root

auth users = web3user

secrets file = /etc/web3.pass

在三台服务节点rsyncd.conf文件配置完成后,依次启动rsync守护进程,接着将rsync服务加入到自启动文件中:

echo  “/usr/local/bin/rsync --daemon” >>/etc/rc.local

到此为止,三个web服务节点已经配置完成。

3 配置内容发布节点

配置内容发布节点的主要工作是将生成的静态网页实时的同步到集群中三个服务节点,这个过程可以通过一个shell脚本来完成,脚本内容大致如下:

#!/bin/bash

host1=192.168.12.131

host2=192.168.12.132

host3=192.168.12.133

src=/web/wwwroot/

dst1=web1

dst2=web2

dst3=web3

user1=web1user

user2=web3user

user3=web3user

/usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib  $src \

| while read files

do

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src[email protected]$host1::$dst1

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src[email protected]$host2::$dst2

/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src[email protected]$host3::$dst3

echo "${files} was rsynced" >>/tmp/rsync.log 2>&1

done

脚本相关解释如下:

--timefmt:指定时间的输出格式。

--format:指定变化文件的详细信息。

这两个参数一般配合使用,通过指定输出格式,输出类似与:

15/04/10 00:29 /web/wwwroot/ixdba.shDELETE,ISDIR was rsynced

15/04/10 00:30 /web/wwwroot/index.htmlMODIFY was rsynced

15/04/10 00:31 /web/wwwroot/pcre-8.02.tar.gzCREATE was rsynced

这个脚本的作用就是通过inotify监控文件目录的变化,进而触发rsync进行同步操作,由于这个过程是一种主动触发操作,通过系统内核完成的,所以,比起那些遍历整个目录的扫描方式,效率要高很多。

有时会遇到这样的情况:向inotify监控的目录(这里是/web/wwwroot/)写入一个很大文件时,由于写入这个大文件需要一段时间,此时inotify就会持续不停的输出该文件被更新的信息, 这样就会持续不停的触发rsync去执行同步操作,占用了大量系统资源,那么针对这种情况,最理想的做法是等待文件写完后再去触发rsync同步。 在这种情况下,可以修改inotify的监控事件,即:“-e close_write,delete,create,attrib”。

接着,将这个脚本命名为inotifyrsync.sh,放到/web/wwwroot目录下,然后给定可执行权限,放到后台运行:

chmod 755 /web/wwwroot/inotifyrsync.sh

/web/wwwroot/inotifyrsync.sh &

最后,将此脚本加入系统自启动文件:

echo  “/web/wwwroot/inotifyrsync.sh &”>>/etc/rc.local

这样就完成了内容发布节点的所有配置工作。

4 测试rsync+inotify实时同步功能

所有配置完成后,可以在网页发布节点的/web/wwwroot目录下添加、删除或者修改某个文件,然后到三个服务节点对应的目录查看文件是否跟随网页发布节点的/web/wwwroot目录下文件发生变化,如果你看到三个服务节点对应的目录文件跟着内容发布节点目录文件同步变化,那么我们这个业务系统就配置成功了。

三、我部署的配置文件和操作

准备机器:服务器A,服务器B,centos操作系统

服务器A作为发布节点,备份路径为 A -> B

1,A上建立文件夹/etc/rsyncd.conf和/etc/backserver.pas

/etc/rsyncd.conf内容:

#运行RSYNC守护进程的用户

uid = root

#运行RSYNC守护进程的组

gid = root

#不使用chroot

use chroot = no

#最大连接数是4

max connections = 10

#pid文件存放位置

pidfile=/var/run/rsyncd.pid

#锁文件存放位置

lockfile=/var/run/rsync.lock

#日志文件存放位置

logfile=/var/log/rsyncd.log

[logs]

#要同步的目录

path =/home/webkk/rysnc_dir

#忽略无关的IO错误

ignore errors

#只读,不能上传

readonly =true

#禁止查看文件列表

list =false

#允许访问服务的ip

hosts allow = 192.168.1.133  #B机器IP地址

#禁止访问服务的ip

#hosts deny = 0.0.0.0/32

#认证的用户名,系统必须存在的用户,但是密码需要在secrets file 配置,不是系统的密码。

authusers= root

#认证用户密码文件,配置auth users的密码

secretsfile=/etc/backserver.pas

/etc/backserver.pas内容:

123456  #即远程备份机器的rsync账号的密码,不需要填写账号

2,B服务器上建立文件/etc/rsyncd.conf和/etc/rsyncd.secretes

/etc/rsyncd.conf内容:

#运行RSYNC守护进程的用户

uid = root

#运行RSYNC守护进程的组

gid = root

#不使用chroot

use chroot = no

#最大连接数是4

max connections = 10

#pid文件存放位置

pidfile=/var/run/rsyncd.pid

#锁文件存放位置

lockfile=/var/run/rsync.lock

#日志文件存放位置

logfile=/var/log/rsyncd.log

[web1]

#要同步的目录

path =/home/rysnc_dir

#忽略无关的IO错误

ignore errors

#只读,不能上传

readonly =false         #可以写

#禁止查看文件列表

list =false

#允许访问服务的ip

hosts allow = 192.168.1.109 #A机器的IP

#禁止访问服务的ip

#hosts deny = 0.0.0.0/32

#认证的用户名,系统必须存在的用户,但是密码需要在secrets file 配置,不是系统的密码。

authusers= root

#认证用户密码文件,配置auth users的密码

secretsfile=/etc/rsyncd.secretes

/etc/rsyncd.secretes内容:

root:Sunto113355
 #该rsync的账号密码

3,在B机器上随意位置建立脚本文件 inotifyrsync.sh

内容:

#!/bin/bash

host1=192.168.1.109 #A机器的IP

dst1=web1

src=/home/webkk/rysnc_dir

user1=root

inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib  $src | while read files

do

rsync -vzrtopg --delete --progress --password-file=/etc/backserver.pas $src [email protected]$host1::$dst1

echo "${files} was rsynced" >>/tmp/rsync.log 2>&1

done

4,在B机器上先执行 rsync --daemon &

在B机器上执行脚本./inotifyrsync.sh &

时间: 2024-10-13 09:16:05

通过rsync+inotify实现文件的实时备份同步的相关文章

rsync+inotify 实现数据的实时备份

我这个人写一些东西难免要发一番感慨,今天做rsync+inotify实现实时备份,做了好长时间没做出来,这段时间我看了好多博文还有一些视频,但自己做的时候还是没做出来,非常郁闷,就拿起书慢慢的看起来,最终我把思路整理好,又重新试验了一遍终于成功了.是的,你百分之九十的时间在实践,而剩下百分之十的时间才能到达成功,坚持加再看一遍很重要. 我先整理一下大致思路,如有时间,我再整理完整的文档出来. 1.先在两台主机里面安装rsync. 2.在服务节点上配置rsync. 3.在内容发布节点上安装inot

rsync+inotify实现数据的实时备份

一.rsync概述 1.1.rsync的优点与不足 rsync与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.  随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量

通过rsync+inotify实现数据的实时备份

我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首

通过rsync+inotify实现数据的实时备份 【转载】

   在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足  与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.  随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中

配置 Rsync + inotify 实现文件服务器数据实时双向同步

Rsync 概述 Rsync 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输钱执行压缩,因此非常适用于异地备份.镜像服务器等应用. Rsync 的官方网站是 http://rsync.samba.org/ ,由 Wayne Davison 进行维护.作为一种最常见的文件备份工具, Rsync 往往是 Linux 和 UNIX 系统默认安装的基本组件之一. Rsync 的优点 Rsync与传统的cp.tar备份方式相比,具

如何通过rsync+inotify实现数据的实时备份配置

一.安装步骤 1) 安装rsync 点击下载rsync-3.0.9.tar.gz   下载文件放到该目录下/usr/src   #cd /usr/src   #tar -zxvf rsync-3.0.9.tar.gz //解压文件   #cd rsync-3.0.9 //进入该文件目录   #./configure //主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系   #make //编译   #make install //安装 2)安装inotify  点

rsync+inotify 实现文件夹的自动同步备份

1 配置好rsync 服务器,客户端,见上一篇 192.168.1.10web服务器中/www  备份到 rsync192.168.1.11 /tmp/backup 2 下载安装inotify wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 解压 ./configure   make make install 3 简介 inotify-tools提供的两个命令行工具: inoti

Zabbix监控系列之-Rsync+Inotify实现文件同步更新(无防火墙版)

Rsync+inotify实现文件同步更新(无防火墙版) 目录 说明:... 2 准备工作:关闭服务器的防火墙... 2 关闭防火墙firewall2 禁止开机启动防火墙... 2 编写脚本"shut-firewall.sh". 2 发布服务器配置rsync:192.168.171.128. 2 安装配置Rsync. 2 配置rsyncd.conf文件... 2 创建认证文件:/etc/rsyncd.secrets. 3 设置文件权限... 3 启动rsync服务... 4 关闭rsy

Rsync+inotify实现文件防篡改

Rsync+inotify实现文件防篡改 设计思路 A服务器作为防篡改源服务器,也就是正常的文件服务器 B服务器作为对外开放,也就是WEB目录服务器 同时将A服务器作为网站后台更新内容的服务器 在B服务器上配置好rsync + inotify 触发式实时同步 图例如下: 配置服务器A防篡改系统 安装rsync yum install rsync 配置rsync文件rsyncd.conf 服务器A(防篡改系统rsync配置) vi /etc/rsyncd.conf [test] uid = roo