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

avatar
avatar
自然
461
文章
472
评论
2020年5月21日18:10:31 评论 1950字阅读6分30秒

自然申请的又拍云联盟优惠(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爱好者,你可以利用它的特性编写各种个性化的小工具。

weinxin
自然博客
快来关注一下,一个linux运维爱好者的个人博客!
avatar
  • 本文由 发表于 2020年5月21日18:10:31
AlphaSSL 域名通配符型DV SSL证书
全网通流量卡/物联卡 SIM专用上网卡
简单的网站备份脚本,自动上传到远程ftp服务器 脚本推荐

简单的网站备份脚本,自动上传到远程ftp服务器

今天给新手站长们推荐一个简单的网站备份脚本,自动上传到ftp服务器。这个脚本代码来自香菇肥牛博主,这个简单的一键备份,可以把网站文件和数据库备份到FTP服务器上,只需要配置几个简单参数即可。 脚本代码...
Linux使用密钥对登录 提升安全等级 Linux

Linux使用密钥对登录 提升安全等级

自然经常遇到一个问题,每次登录服务器经常可以开到这么一句提升“本次登录成功前,已有9w+次认证失败”,毫无疑问,这是被人爆破了。服务器经常被人爆破,如果你的密码太多与简单,有可能会把密码爆破出来。自然...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: