JAVA实现inotify一样的功能_rsync+inotify实现本地文件实时同步

什么是rsync?

rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。

rsync工作方式:

rsync有三种工作方式:

(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。

(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。

(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。

前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。

由上面可以知道:rsync可以本地,远程同步文件。可以定时,或者时间间隔但是不能实时!

详情参考网址:https://www.cnblogs.com/f-ck-need-u/p/7220009.html#auto_id_1

什么是inotity?

Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。

此种机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。

由上可知道:inotiy用于监听文件夹变化

inotity详情参考:https://blog.csdn.net/longwang155069/article/details/54016789

那么由rsync+inotity 就可以做到实时去同步文件了

rsync的安装:

yum -y install rsync

service rsyncd start

配置文件相关:

省略!! 每一台服务器上面都有安装这个

inotity的安装:

linux命令:

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

tar zxvf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure&&make&&make install

安装过程如果报一下错误:

configure: error: in `/tmp/inotify-tools-3.14':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details.

则需要安装: yum install gcc

--安装完后,就会产生下面两个命令

/usr/local/bin/inotifywait

/usr/local/bin/inotifywatch

安装完毕后:

创建脚本

#!/bin/bash

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /srv/tydata|while read files

do

rsync  -av --delete  --exclude '*.pdf' --exclude '*.html' --exclude '*.docx' --exclude '*.doc'  /srv/tydata/upload/   /srv/www/static/upload/ty

done

修改权限

#chmod 0755 /tmp/1.sh

启动脚本

# nohup sh /tmp/1.sh &

光标会停止并闪烁再敲击一次回车,会在/test/目录 下生成nohup.out文件

下面对这个进行验证即可!

// exclude 表示不同步某一类文件

注意运行脚本的地方要在你要同步文件夹的 目录下哦

还有如果要修改脚本,必须先杀掉之前运行的脚本然后再运行修改后的脚本。否则不会生效!

转载至链接:https://my.oschina.net/960823/blog/1828699

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现实时同步,可以结合使用rsync和inotify工具。 首先,使用rsync命令进行初始的文件同步。你可以使用如下命令: ``` rsync -avz --delete source_directory/ destination_directory/ ``` 这将同步源目录(source_directory)中的文件到目标目录(destination_directory)。-a`选项表示使用归档模式,保持文件属性和权限不变。`-v`选项表示输出详细的同步信息。`-z`选项表示启用压缩来加快传输速度。`--delete`选项表示删除目标目录中不存在于源目录中的文件。 接下来,你可以使用inotify工具监控源目录的文件变化,并在有变更时自动触发rsync命令进行实时同步inotify是Linux内核提供的一种机制,可以监视文件系统中的事件,如文件或目录的创建、修改、删除等。 你可以使用inotifywait命令来监控文件系统事件,并在事件发生时执行rsync命令。以下是一个示例: ``` #!/bin/bash SOURCE_DIR="/path/to/source_directory" DESTINATION_DIR="/path/to/destination_directory" inotifywait -m -r -e modify,create,delete,move "$SOURCE_DIR" | while read path action file; do rsync -avz --delete "$SOURCE_DIR/" "$DESTINATION_DIR/" done ``` 上述脚本监视源目录中的修改、创建、删除和移动事件,并在事件发生时执行rsync命令进行同步。你可以将脚本保存为一个.sh文件,并使用`chmod +x script.sh`命令赋予执行权限。 这样,当源目录中的文件发生变化时,inotify会捕捉到事件并触发rsync命令进行实时同步到目标目录。 请注意,以上示例仅为演示目的,并没有考虑到错误处理、日志记录等方面。在实际应用中,你可能需要对脚本进行适当的修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值