Rsync+inotify 数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rsync+inotify 数据同步相关的知识,希望对你有一定的参考价值。

         Rsync工具的使用

--------

rsync 端口873

rsync常用的命令选项:

-a:归档模式,相当于递归、保留权限等多个选项的组合

-v:显示同步过程详细信息

-z:传输过程中启用压缩

-A:保留文件的ACL属性信息

-n:测试同步过程,不做实际修改

--delete:删除目标文件夹内多余的文档


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

本地同步(命令用法类似cp)

rsync -a --delete /date/www/  /data/bak_www/


远程SSH同步(命令用法类似scp)

rsync -a --delete /data/www  [email protected]:/data/bak_www/

————————————————————————————————————————————————————————————————————————



Rsync+Rsync

创建rsync配置文件rsyncd.conf

vim  /etc/rsyncd.conf


[tools]                                         //定义共享名

path =/data/www                                 //rsync服务端数据目录路径

comment = Rsync Share Test                      //同步资源注释

read only = yes                                 //只读

dont compress =*.gz *.bz2 *.tgz *.zip           //同步时不再压缩的文档类型

auth users = zhangsan                    //执行数据同步的用户名(多个用户用,英文逗号隔开)

secrets file =/etc/rsync_user            //指定账号文件的路径

timeout = 600                   //设置超时时间

hosts allow = 192.168.1.119     //允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

hosts deny = 192.168.1.118      //禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

log file = /var/log/rsync.log   //日志文件位置,启动rsync后自动产生这个文件,无需提前创建

motd file = /etc/rsync.Motd     //rsync启动时欢迎信息页面文件位置(文件内容自定义)

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

创建rsync账号文件rsync_user

vim /etc/rsync_user

zhangsan:123456 

                      //每行一个用户名, 用户名:密码(注意权限)

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

chmod 600 /etc/rsync_user


客户端

------

查看到服务端提供的资源(后面两个::)

rsync  192.168.1.100::


使用zhangsan账户远程同步(需要输入密码)

rsync -av --delete [email protected]::tools /data/bak


使用zhangsan账户非交互式同步(不需要输入密码)

rsync -av --delete --password-file=/etc/rsync_password [email protected]::tools /data/bak_www/


预先把密码存放在/etc/rsync_password,这里存放位置,可自由安排。 

chmod 600 /etc/rsync_password      (权限)


————————————————————————————————————————————————————————————————————————




inotify+Rsync 


ssh-keygen 

             创建并部署SSH公钥,实现免密码验证


ssh-copy-id [email protected]

                                 拷贝到192.168.1.101上面

 

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

下载inotify

编译安装

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 

 tar xf inotify-tools-3.14.tar.gz ;cd inotify-tools-3.14

 ./configure --prefix=/usr/local/inotify && make && make install


创建个脚本,加入后台运行.

vim /usr/local/inotify-3.14/inotify.sh

#!/bin/bash

#para

host01=192.168.1.100  #inotify-slave的ip地址

src=/data/apache-tomcat-9.0.0.M21/webapps        #本地监控的目录

dst=tools         #inotify-slave的rsync服务的模块名

user=rsync_backup      #inotify-slave的rsync服务的虚拟用户

rsync_passfile=/etc/rsync.password   #本地调用rsync服务的密码文件

inotify_home=/usr/local/inotify-3.14    #inotify的安装目录

#judge

if [ ! -e "$src" ] \

|| [ ! -e "${rsync_passfile}" ] \

|| [ ! -e "${inotify_home}/bin/inotifywait" ] \

|| [ ! -e "/usr/bin/rsync" ];

then

echo "Check File and Folder"

exit 9

fi

${inotify_home}/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete,create,attrib $src \

| while read file

do

#  rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src [email protected]$host01::$dst >/dev/null 2>&1

cd $src && rsync -aruz -R --delete ./   [email protected]$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1

#cd /data/apache-tomcat-9.0.0.M21/webapps && rsync -aruz -R --delete ./ [email protected]::tools  --password-file=/etc/rsync.password

done

exit 0

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


###########inotify报错error while loading shared libraries: libinotifytools.so.0: cannot open shared object fil########

系统找不到该库

find . -name libinotifytools.so.0

把查找的文件路追加到 /etc/ld.so.conf

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


以上是关于Rsync+inotify 数据同步的主要内容,如果未能解决你的问题,请参考以下文章

rsync+inotify实现同步数据

(转)rsync+inotify实时同步

rsync+inotify实现数据同步

配置rsync+inotify实时同步

rsync+inotify实时同步

0基础linux运维教程 Rsync结合inotify实现数据实时同步