Rsync笔记+inotify实战

RSYNC + inotify介绍与实战

什么是rsync?

如果公司里面有两台web服务器,那么,怎么实现这两台服务器之间的文件同步呢?

Scp复制,当然还有rsync远程同步

那么scp和rsync两者区别在哪里呢?

Scp是复制,从一个服务器复制文件到另一个服务器,相当于Windows的复制粘贴

Rsync是远程同步,比如一台服务器有所改动,如添加或者删除些文件,那么另一台也会自动去同步。

Rsync和scp典型的区别在于scp是将文件整个都复制过去,rsync是同步文件所改动的地方实时同步

Rsync缺点:

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

什么是inotify

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

Rsync+inotify实时同步

环境

Server 192.168.1.110

backup 192.168.1.120

首先确认服务端安装了rsync服务,默认是自带rsync服务所以不用安装

创建共享目录,然后将一些文件放入到共享目录里

[[email protected] ~]# mkdir  /common;cp /etc/init.d/*  /common/

然后编辑rsync的conf文件

Vim /etc/rsyncd.conf

[[email protected] etc]# vim rsyncd.conf

[[email protected] etc]# cat rsyncd.conf

#/etc/rsyncd.conf   设置服务器文件名称

motd file = /etc/rsyncd.motd   该文件中编写提示信息

transfer  logging = yes  开启日志传输功能

log file = /var/log/rsyncd.log  日志名称

pid file = /var/run/rsyncd.pid   pid进程号保存文件名称

lock file = /var/run/rsync.lock  锁文件名称

port = 873  端口号rsync 默认873

address = 192.168.1.110 服务器接口ip地址

uid = nobody  进行数据传输的账户名称默认nobody

gid = nobody   gid 默认nobody

use chroot = no 是否开启root权限不开启

read only = yes  是否允许客户上传数据,这里设置只读

max connection = 10 设置并发连接数

[common]   共享文件的模块

comment = Web content

path = /common  同步目录用path指定

ignore errors  忽略IO错误

#exclude = test/

auth users = tom,jerry 用户

secrets file = /etc/rsyncd.secrets  密码验证文件

hosts allow=192.168.1.0/255.255.255.0  允许哪个网段

hosts deny=*  拒绝所有

list = false  客户端请求显示模块列表,本模块是否显示,默认true

然后开始创建rsync同步用户

[[email protected] ~]# echo "tom:pass" >/etc/rsyncd.secrets  创建用户到指定文件里

[[email protected] ~]# echo "xiaohu:pass" >>/etc/rsyncd.secrets

[[email protected] ~]# chmod  600 /etc/rsyncd.secrets   给权限

[[email protected] ~]# echo "welcome rsync" >/etc/rsyncd.motd  设置提示信息

[[email protected] ~]# rsync –daemon 启动rsync

[[email protected] ~]# echo "/usr/bin/rsync --daemon" >> /etc/rc.local   添加到开机启动文件里

[[email protected] ~]# iptables –F 关闭防火墙

客户端同步数据

[[email protected] ~]# rsync  -vzrtopg --progress [email protected]::common  /test

welcome to access

Password:

receiving incremental file list

created directory /test

./

abrtd

1708 100%    1.63MB/s    0:00:00 (xfer#1, to-check=63/65)

acpid

1725 100%    1.65MB/s    0:00:00 (xfer#2, to-check=62/65)

atd

2122 100%    1.01MB/s    0:00:00 (xfer#3, to-check=61/65)

auditd

3378 100%    1.61MB/s    0:00:00 (xfer#4, to-check=60/65)

OK 同步成功

到这里我们的rsync基本就完事了

如果要实现无密码登录呢?

需要在客户端创建密码文件给600权限

[[email protected] ~]# echo "111" > /etc/rsync.pass

[[email protected] ~]# chmod  600 /etc/rsync.pass

再次同步加参数—password-file

[[email protected] ~]# rsync  -avz --delete --password-file=/etc/rsync.pass  [email protected]::common  /test

编写一个脚本,让文件自动同步。不用手动输入命令

[[email protected] ~]# cat check_rsync.sh

#!/bin/bash

#this is rsync fuzhi jiaoben

export PATH=/bin:/usr/bin:/usr/local/bin

SRC=common

BEN=o

Server=192.168.1.110

user=jerry

passwd=/etc/rsync.pass

#kaishifuzhi

[ ! -d  $BEN ] && mkdir $BEN

rsync -az --delete  --password-file=$passwd  ${user}@${Server}::$SRC $BEN/$(date+%Y%m%d)

那么rsync只是同步,那么如何给他做到实时t同步,比如文件发生一个小改动,怎么同步?

那么就用到inotify了

安装inotify

[[email protected] ~]# tar zxf inotify-tools-3.14\ \(1\).tar.gz

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

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

创建监控文件,然后打开终端查看这个文件,看看inotify反应

[[email protected] ~]# mkdir -p /tast; echo "hello">/tast/foo

[[email protected] ~]# inotifywait  /tast/

Setting up watches.

Watches established.

/tast/ OPEN,ISDIR

写一个脚本实时监控rsync日志相关信息

脚本文件

[[email protected] ~]# cat jiankong.sh

#!/bin/bash

while inotifywait -e modify /var/log/rsyncd.log

do

if tail -n1 /var/log/rsyncd.log

then

echo love

fi

done

测试情况

[[email protected] ~]# sh jiankong.sh

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:47 [29061] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:47 [29061] connect from UNKNOWN (192.168.1.120)

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:49 [29061] rsync on common/ from [email protected] (192.168.1.120)

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:49 [29061] building file list

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:49 [29061] sent 924 bytes  received 58 bytes  total size 251858

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:58 [29082] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:58 [29082] connect from UNKNOWN (192.168.1.120)

love

Setting up watches.

Watches established.

/var/log/rsyncd.log MODIFY

2016/04/18 08:11:59 [29082] auth failed on module common from unknown (192.168.1.120): password mismatch

love

Setting up watches.

Watches established.

[[email protected] ~]# cat jiankong.sh

#!/bin/bash  变量

while inotifywait -e modify /var/log/rsyncd.log  条件 监控rsyncd.log文件

do  循环

if tail -n1 /var/log/rsyncd.log  指令 如果rsyncd.log第一行更新会打印出来,并循环

then  然后

echo love  提示love

fi  结束

done结束

时间: 2024-08-07 01:03:10

Rsync笔记+inotify实战的相关文章

Rsync服务的实战

Rsync服务 Rsync rsync是一款开源.快速.多功能.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于Unix/linux/Windows等多种操作系统平台. rsync 简介 rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝.当然

rsync、inotify实现web实时同步

. rsync.inotify实现web实时同步,布布扣,bubuko.com

rsync结合inotify实现实时同步

背景介绍 中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步 实验说明 操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上 源服务器:172.16.10.10/24 目标服务器:172.16.10.20/24 实验目的:将源服务器上的/rsync目

rsync 与 inotify 实现双机实时同步

折腾了一个上午,终于实现了rsync与inotify来实现双机实机的同步,现分享出来,操作步骤如下: A机:192.168.1.67 B机:192.168.1.68 先在A机上操作如下: 1:安装rsync 及inotify-tools 直接yum -y install rsync inotify-tools  安装就好.(inotify-tool需要安装epel的扩展源) 2:创建公钥(为了同步时不输入验证密码) 步骤如下: 1: ssh-keygen 2:scp -r /root/.ssh/

烂泥:rsync与inotify集成实现数据实时同步更新

本文首发于烂泥行天下. 上篇文章我们介绍了如何使用rsync同步文件,这篇文章我们再来介绍下,如何把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解

Hadoop学习笔记(8) ——实战 做个倒排索引

Hadoop学习笔记(8) ——实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如下: 这张索引表中, 每个单词都对应着一系列的出现该单词的文档,权表示该单词在该文档中出现的次数.现在我们假定输入的是以下的文件清单: T1 : hello world hello china T2 : hello hadoop T3 : bye world bye hadoop bye bye 输

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]

rsync同步工具实战

rsync同步工具实战 rsync具有增量同步的功能,相对于cp工具来说,效率比较高:同时可以在本地到本地或本地到远程之间,实现镜像备份 环境:分别有机器:server-178/24,client-b-179/24,client-c-180/24 其中以server-178/24为rsync服务端,client-b-179/24,client-c-180/24为rsync客户端 实战过程: 检查服务端和客户端环境:rpm -aq|grep rsync [[email protected] ~]#

rsync笔记整理

rsync:开源,快速,功能多,可增量,全量,本地或者远程镜像 支持:linux,win,unix rsync:remote rsynchronization web:www.samba.org/ftp/rsync/rsync.html 功能:类似于scp,cp,rm等 默认算法:quick check算法(可以同步文件内容,属性等) 特性: 支持拷贝特殊文件如链接文件,设备文件 可以有排除指定文件或者目录同步功能 可以坐到保持原来文件或者目录权限,时间,链接,属组等属性不改变  可增量备份,只