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 数据同步的主要内容,如果未能解决你的问题,请参考以下文章