小心灵学院
欢迎您的光临

linux下使用inotify文件系统状态,发生变化后触发sync同步效果

自然申请的又拍云联盟优惠(15GB存储/月,10GB流量/月)不到4个月已经把1年的量用完了,现在开始更换CDN附件加速服务,现在需要把数据迁移到全新的存储加速平台,平台提供了不限量的存储服务和2TB/月的CDN流量。

linux下使用inotify文件系统状态,发生变化后触发sync同步效果

现在遇到问题,附件如何在本地+云端同时拥有,并保持两端文件的同步,平台使用ftp进行文件管理。双端可控的情况下,syncthing会是最佳的选择。通过咨询linux大佬得到的方案是使用inotify对本机文件系统进行状态监控,发生modify,delete,create,attrib,move等变化时,触发sync同步文件。

inotify介绍

Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。

参考文章:https://www.ibm.com/developerworks/cn/linux/l-ubuntu-inotify/index.html

linux开发者已经基于c语言开发了工具包inotify-tools供我们使用,自然在这里使用rclone挂载ftp进行文件的同步。

inotify-tools软件包安全

2.1编译安装
wget https://github.com/inotify-tools/inotify-tools/releases/download/3.20.2.2/inotify-tools-3.20.2.2.tar.gz
tar -zxvf inotify-tools-3.20.2.2.tar.gz
cd inotify-tools-.20.2.2
./configure --prefix=/usr/local/inotify
make && make install
2.2软件包安装

对于自然这种懒人而言,能软件包安装的何必编译呢?

#redhat/centos平台
yum install inotify-tools
#debian/ubuntu平台
apt-get install inotify-tools

sync同步脚本代码

3.1sync同步脚本代码
cat >/root/inotify_sync.sh <<EOF
#!/bin/sh
## -------------------------------------------------
## @监控目录状态,有变化后触发rsync同步
## -------------------------------------------------

srcdir="/www/www.wanvi.net/wp-content/uploads/"
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T%w%f' -e modify,delete,create,attrib,move ${srcdir} \
|while read file
do
/usr/bin/rclone sync /www/www.wanvi.net/wp-content/uploads/ ufile:/wp-content/uploads/ -v
done
EOF

srcdir为需要监控的路径;

rclone 为文件同步的工具,如果需要其他工具也可以sync、rsync、scp等等都可以;

3.2设置开机启动sync同步脚本
cat >> /etc/systemd/system/inotify_sync.service <<EOF
[Unit]
Description=CTList
After=network.target
 
[Service]
Type=simple
ExecStart=/root/inotify_sync.sh
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
3.3常用管理命令

启动同步服务    systemctl start inotify_sync.service

停止同步服务    systemctl stop inotify_sync.service

查看同步服务状态 systemctl status inotify_sync.service

开启开机自启动 systemctl enable inotify_sync.service

关闭开机自启动 systemctl disable inotify_sync.service

总结

利用inotify这个linux内核功能,完成了文件系统状态的监控,可以设置相应的脚本,在文件发生变化时触发一定的动作。自然这里用来同步ftp远程文件可谓是大材小用了,如果你是linux爱好者,你可以利用它的特性编写各种个性化的小工具。

赞(0)
未经许可不得转载:小心灵学院 » linux下使用inotify文件系统状态,发生变化后触发sync同步效果
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址