bash Shell命令实现文件增量同步 自动同步
描述
- 监听某个目录/文件夹,当其中有文件变动时将自动同步到一个目标目录/文件夹;
- 核心用于文件增量同步,但同时具备:同步修改、同步删除 功能;
- 不需要用到 cron 定时任务,更加易用;
- 相比于定时同步,这个增量同步脚本更加具备实时性;
- 日志提示。使用
nohup 脚本名称.sh &
还能在 nohup.out 中记录日志。
运行环境
- CentOS 7+
- inotifywait命令
如果操作系统没有安装inotifywait
命令,可以直接yum install -y inotifywait
或者其它你喜欢的安装方式
脚本源码
#!/bin/bash
SRC_DIR="/home/temp/src_dir"
DEST_DIR="/home/temp/dest_dir"
inotifywait -m -r -e modify,create,delete $SRC_DIR |
while read path action file; do
echo -e "path --- > $path \t\t action ---> $action \t\t file ---> $file"
rsync -avz --delete ${path} $DEST_DIR
done
改进
想同步到远程服务器怎么办?
rsync自带支持连接远程主机:
rsync -avz "$SRC_DIR/" root@目标IP:"$DEST_DIR/"
缺陷
脚本并不能实现监听远程服务器目录!
我并没有继续研究,有好的解决方案的小伙伴麻烦留言,3Q!
分享