rsync简介:

Rsync 是一个远程数据同步工具,使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份

inotify-tools简介:

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。现在介绍一下它的使用方法

环境部署:

inotify_slave  42.159.246.48:57893      数据备份端

inotify_master  42.159.246.48:57892      源数据端

一、部署数据备份端:

1. 备份端部署rsync服务:

[root@WEB2 ~]#yum -y install rsync

[root@WEB2 ~]#useradd rsync -s /sbin/nologin  -M

[root@WEB2 ~]#mkdir -p /cmsresoure/p_w_picpath/backup

[root@WEB2 ~]#chown rsync:rsync /cmsresoure/p_w_picpath/backup

2. 添加配置文件/etc/rsyncd.conf

[root@WEB2 ~]#vim /etc/rsyncd.conf

##################################################################################

##rsyncd.conf start##

uid = rsync

gid = rsync

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[backup]

path = /cmsresoure/p_w_picpath/backup/

ignore errors

read only = false

list = false

hosts allow = *

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

#rsync_config_______________end

##################################################################################

3. 配置虚拟用户的密码文件并启动服务

[root@WEB2 ~]# echo "rsync_backup:leesir" >/etc/rsync.password

[root@WEB2 ~]# chmod 600 /etc/rsync.password

[root@WEB2 ~]# rsync --daemon

[root@WEB2 ~]# ps -ef | grep rsync

4. 通过源数据端测试推送

[root@web1 ~]# echo "leesir" >/etc/rsync.password #注意:这里只要写密码即可,切记。

[root@web1 ~]# chmod 600 /etc/rsync.password

[root@web1 ~]# rsync -avzlh  inotify.sh rsync_backup@42.159.246.48::backup --password-file=/etc/rsync.password

在源数据端推送后,去数据备份端检查是否推送成功。

二、源数据端部署

1. 查看当前系统是否支持inotify

[root@web1 ~]# ll /proc/sys/fs/inotify/

total 0

-rw-r--r-- 1 root root 0 Oct  8 18:54 max_queued_events

-rw-r--r-- 1 root root 0 Oct  8 18:54 max_user_instances

-rw-r--r-- 1 root root 0 Oct  8 18:54 max_user_watches

Remarks:

#显示这三个文件则证明支持。

/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

2. 部署inotify服务:

[root@web1 ~]#  yum -y install inotify-tools

[root@web1 ~]#  rpm -qa  | grep inotify-tools

inotify-tools-3.14-1.el6.x86_64

[root@web1 ~]#  vim inotify.sh

##################################################################################

#!/bin/bash

#

#2015.10.8

#

DESTHOST=42.159.246.48

SRCDIR=/cmsresoure/p_w_picpath/backup/

PASSWD=/etc/rsync.password

USER=rsync_backup

inotifywait -mr  --timefmt '%d/%m/%y  %H:%M'   --format  '%T   %w    %f' -e close_write,modify,create,attrib $SRCDIR | while read DATE TIME DIR FILE;do

FILECHANGE=${DIR}${FILE}

rsync -avztopglH $SRCDIR  $USER@${DESTHOST}::backup --password-file=$PASSWD  &>/dev/null && \

echo "At ${TIME} on ${DATE}, file $FILECHANGE was  backed up via rsync"  >> /var/log/p_w_picpath.log

done

##################################################################################

3. 测试脚本创建文件测试:

[root@web1 ~]# more  /home/user/touch_file.sh

##################################################################################

#!/bin/sh

#

#2015.10.8

#

#Create 5 100K files, file name is a random number

#

#

for ((i=1;i<6;i++))

do

dd if=/dev/zero of=/cmsresoure/p_w_picpath/backup/$(sha1sum<<<$RANDOM|cut -b 5-10)  bs=100k count=1

echo "touch $i done"

sleep 3

done

echo "the script is done"

##################################################################################

[root@web1 ~]# echo "*/30 * * * * /bin/bash /home/user/touch_file.sh > /dev/null 2>&1" >> /etc/cronteb

[root@web1 ~]# sh inotify.sh &             #将脚本加入后台执行

Setting up watches.  Beware: since -r was given, this may take a while!

Watches established.

三. 实时同步测试

1. 源数据端操作:

[root@web1 ~]# sh /home/user/touch_file.sh

##################################################################################

1+0 records in

1+0 records out

102400 bytes (102 kB) copied, 0.000441594 s, 232 MB/s

touch 1 done

1+0 records in

1+0 records out

102400 bytes (102 kB) copied, 0.000603492 s, 170 MB/s

touch 2 done

1+0 records in

1+0 records out

102400 bytes (102 kB) copied, 0.000548994 s, 187 MB/s

touch 3 done

1+0 records in

1+0 records out

102400 bytes (102 kB) copied, 0.000423695 s, 242 MB/s

touch 4 done

the script is done

##################################################################################

[root@web1 ~]# ls /cmsresoure/p_w_picpath/backup/

039f90  15aaf2  1c2d4b  3b079d

2. 数据备份端检查:

[root@WEB2 ~]# cd /cmsresoure/p_w_picpath/backup/

[root@WEB2 backup]# ls

039f90  15aaf2  1c2d4b  3b079d

四. 维护:

1.  设置在备份端监控Rsync服务的脚本:

[root@WEB2 shell]# vim rsync_check.sh

##################################################################################

#!/bin/bash

#

#2015.10.8

#

#The script will check the Rsync service, if you find that Rsync will restart the service.

RSYNC_CHECK=`netstat -npl | grep -c rsync`

if [ "$RSYNC_CHECK" -eq "0" ];

then

/usr/bin/rsync --daemon

fi

##################################################################################

[root@web1 shell]# echo "*/2 * * * * /bin/bash /shell/rsync_check.sh >/dev/null 2>&1"  >>/etc/crontab

Remarks:

将脚本加入到计划任务中,没两分钟检查一次rsync是否正常运行

2.  设置在源数据端检查inotify服务的脚本:

[root@web1 shell]# vim check_inotify.sh

##################################################################################

#!/bin/bash

#

#2015.10.9

#

#the script will to check the inotify server

#

#

INOTIFY=/shell/inotify.sh

CHECK_INOTIFY=`ps -ef | grep -c inotify.sh`

if [ "$CHECK_INOTIFY"  -eq "1" ];

then

/bin/bash  "$INOTIFY"  >/dev/null 2>&1

fi

##################################################################################

[root@web1 shell]# echo  "*/2 * * * * /bin/bash /shell/check_inotify.sh >/dev/null 2>&1"  >> /etc/crontab

五。测试结果:

rsync+inotify-tools同步效果:rsync可以完全实时同步监控的文件夹,并输出同步日志。

转载于:https://blog.51cto.com/cctian/1701124

rsync+inotify-tools实现文件的实时同步相关推荐

  1. 利用ssh+rsync+inotify实现数据的异地实时同步

    在服务器中,通常结合计划任务.shell脚本来执行本地备份.为了进一步提高备份的可靠性,使用异地备份也是非常重要的,利用rsync工具,可以实现快速.高效的异地备份.本篇博客将配置rsync+cron ...

  2. rsync+inotify实现文件增量实时同步

    rsync+inotify实现文件增量实时同步 项目环境 防火墙{项目环境,不是必要条件} 项目需求 一.rsync安装部署 1.检查是否安装rsync 2.测试系统rsync命令 3.新建配置文件 ...

  3. sersync + rsync 实现文件的实时同步

    这里有一点要特别注意了,就是在你完成备份之后,先不要把本地的文件都给删除了,先把服务停了之后再删除文件, 因为你已删除,检查到两边不一致,他又会把备份端给删除了.所以特别得注意了.这里吃过一次亏. 还 ...

  4. linux 文件双向同步,Linux文件双向实时同步rsync

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 echo"/usr/sersync/sersync2-d-o/usr/sersync/confxml.xm ...

  5. Centos7.0系统下Rsync+sersync实现多文件数据实时增量同步

    前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增 ...

  6. 用Unison+inotify实现数据的双向实时同步

    一.Unison简介Unison是windows和unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致.unison拥有其它一些同步工具或文件系统的相同特性,但也有 ...

  7. Windows服务器实现文件监控实时同步

    文件同步工具(cwRsync) 1.安装服务 工具下载   https://download.csdn.net/download/qq_23409611/10741863 服务端安装cwRsyncSe ...

  8. 手机文件夹与电脑文件夹实时同步

    试了 onedriver 和坚果云,在电脑间互相同步表现良好.这边把文件一放进去,那边就有了. 想要实现和PC端一样,把文件夹放进手机的同步文件夹,电脑端就能马上看到(反过来也是),无论是onedri ...

  9. rsync+lsyncd实现(本地以及远程)文件实时同步

    lsyncd基于lua语言开发,整合了rsync和notify 实现文件的实时同步 系统环境cat /etc/issue CentOS release 6.6 (Final)uname -sr Lin ...

最新文章

  1. Android 自定义View Canvas —— Bitmap
  2. Analog使用中的一些技巧和总结
  3. 《java入门第一季》之面向对象面试题(继承中构造方法的关系)
  4. Word2vec基础之霍夫曼树
  5. Winform中设置BackgroundWorker在取消时关闭后台进程
  6. fortran语法笔记
  7. LeetCode 939. 最小面积矩形(哈希)
  8. 【英语学习】【Level 07】U02 Live Work L3 The best of Shanghai
  9. 通过telnet自动下载cfg配置文件
  10. 自主可控计算机大会2019,荣科科技受邀参加2019自主可控计算机大会
  11. Android Studio 4.1一键生成代码Template
  12. 生成条形码二维码DataMatrix条码.EAN码.39码.交叉25码.UPC码.128码.93码.ISBN码.Codabar等...
  13. [数据集][转载]ImageNet 2012 1000分类名称和编号
  14. 【图的表示】:如何存储微博、微信等社交网络中的好友关系?
  15. mysql 数据透视_把数据库中的数据制作成Excel数据透视表
  16. 惊闻苏州GDP总量突破2万亿大关!
  17. 波菲那契数列公式_裴波那契数列
  18. 为什么寄存器处理数据的速度比内存快?
  19. 高斯过程回归(六)核函数
  20. Swif- 访问控制

热门文章

  1. 国内哪里培训python比较好-python培训哪家机构比较好?
  2. ML-1 逻辑回归和梯度下降
  3. c语言100以内加减乘除,一百以内的加减乘除法游戏....
  4. hdu1716 排列2(排列生成算法)
  5. [Nikon D80]Beauty
  6. python中的控制流
  7. java的collection集合
  8. 纳税服务系统【异常处理、抽取BaseAction】
  9. 查询表的列名,字符类型
  10. 前缀和?or差分序列?