【Linux下Inotify + Rsync文件实时同步】

简介:

Linux下Inotify + Rsync文件实时同步

一、使用前言*

随着公司业务的发展,单web服务器不能满足用户的访问,需要增加多台web服务器实现均衡高可用性访问。为了统一各web服务器之间的数据随时一致,人工方式肯定是不可取,考虑到需要实时同步,进而采用inotify+rsync的方案进行同步!

 
  1. 配置环境:centos 5.3  x86_64  
  2.  
  3. rsync版本:rsync-0.3.7 
  4.  
  5. inotify版本:inotify-tools-3.14 
  6.  
  7. 服务器端:192.168.2.79  【也是rsync+inotify服务端】  
  8.  
  9. 客户端:192.168.2.100 【需要同步,保持数据一致的服务器】  
  10.  
  11. 首先下载所需的软件:  
  12.  
  13. http://blog.mgcrazy.com/download/rsync-3.0.7.tar.gz  
  14.  
  15. http://blog.mgcrazy.com/download/inotify-tools-3.14.tar.gz  
  16.  

二、正式安装:

登陆服务端192.168.2.79,下载文件到:/usr/src 下:

 
  1. cd  /usr/src  && wget http://blog.mgcrazy.com/download/{inotify-tools-3.14.tar.gz,rsync-3.0.7.tar.gz}  && tar  xzf  rsync-3.0.7.tar.gz && cd rsync-3.0.7  && ./configure --prefix=/usr/local/rsync  &&make  &&make install  & cd   ../ && tar xzf  inotify-tools-3.14.tar.gz  && cd  inotify-tools-3.14 && ./configure &&make &&make install 

 

三、配置ssh认证:

【目的是为了实时同步的时候不需要输入密码】

在服务端执行这个命令生成公钥:ssh-keygen  一路回车:如下图

 

 

然后远程拷贝公钥到客户端服务器并重命名为authorized_keys :

 
  1. scp -r /root/.ssh/id_rsa.pub root@192.168.2.100:/root/.ssh/authorized_keys

四、在服务器端配置实时同步脚本:

 
  1. #!/bin/sh  
  2. src=/home/webapps/www  
  3. des=/home/webapps/  
  4. ip=192.168.2.100  
  5.  
  6. inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file  
  7.    do  
  8.      for i in $ip  
  9.       do  
  10.     /usr/local/rsync/bin/rsync   -aP   --delete  $src root@$ip:$des    
  11.       done  
  12.    done

保存为rsync.sh 并给执行权限:chmod o+x rsync.sh  这里可以根据实际情况修改需要同步的路径和客户端ip:192.168.2.100 是客户端的ip。

五、测试结果:

剩下就是在后台一直开着这个脚本了:可以用:screen 后台执行; 然后 ./rsync.sh   ;crtl+a +d退出,在服务端修改、创建一个文件,相当于一个动作会触发inotify,如果没有动作,默认它是不同步的,然后系统会自动执行rsync同步到客户端,你可以去客户端查看数据


本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/533695

相关文章
|
22天前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
70 2
|
23天前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
30 1
Linux 服务器下载百度网盘文件
|
16天前
|
Ubuntu Linux Shell
Linux系统命令 安装和文件相关命令
本文档详细介绍了Linux系统中的常用命令,包括软件安装卸载命令如`dpkg`和`apt-get`,压缩与解压命令如`gzip`、`bzip2`和`xz`,以及`tar`命令用于打包和解包。此外还介绍了文件分割命令`split`,文件操作命令如`cat`、`head`、`tail`、`more`、`less`等,管道命令和`wc`、`grep`、`find`、`cut`、`sort`、`uniq`、`diff`等实用工具。最后,文档还讲解了文件属性相关的命令如`chmod`、`chown`、`chgrp`以及创建硬链接和软链接的`ln`命令。
|
25天前
|
Linux
linux 删除乱码文件名的文件
【8月更文挑战第26天】当遇到文件名显示为乱码,导致无法正常通过键盘输入文件名进行删除操作时,可以利用鼠标的复制功能配合`rm`命令实现删除。对于文件夹的删除,可使用`rm -rf 目录名`。然而,有时这种方式仍无法删除某些特殊乱码文件,这时可以通过获取文件的i节点号(使用`ls -i`或`ll -i`命令查看)并执行`find -inum [节点号] -delete`来进行删除。这种方法特别适用于处理那些因文件名问题而难以删除的情况。
73 2
|
26天前
|
JSON Linux 网络安全
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
【Azure 应用服务】如何从App Service for Linux 的环境中下载Container中非Home目录下的文件呢?
|
22天前
|
JavaScript Linux
Linux中和文件相关的操作
Linux中和文件相关的操作
26 0
|
24天前
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
31 0