Linux下文件实时和增量同步
Inotify是一个 Linux特性, 它监控文件系统操作, 比如读取、写入和创建。
Inotify 反应灵敏, 用法非常简单, 并且比 cron 任务的繁忙轮询高效得多, 只要使用Inotify文件有变动+rsync命令同步有变化的文件, 这样就达到增量备份的需求
github地址:github.com/inotify-tools/inotify-tools
# 系统已经默认安装rsync
> # rsync –version
rsync version 3.1.2 protocol version 31
Inotify安装
# 安装基本编译环境
# Rhel && CentOS
> # sudo yum install gcc make
# Ubuntu
> # sudo apt install gcc make
编译安装inotify-tools
# 下载Inotify工具
> # sudo wget http://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.6.tar.gz
# 解压
> # sudo tar -zxvf 3.21.9.6.tar.gz
> # cd inotify-tools-3.21.9.6
# 配置、编译和安装
> # ./autogen.sh
> # sudo ./configure
> # sudo make && make install
yum安装inotify-tools方法
> # yum install -y inotify-tools
安装完成之后会在
/usr/local/bin/inotifywait下生成可执行文件, 使用以下命令时, 屏幕输出正常则安装成功。
> # inotifywait –help
inotifywait 3.14
inotifywait [选项] 目标文件夹
#常用命令选项:
-m 持续监控(捕获一个事件后不退出)
-r 递归监控, 包括子目录及文件
-q 减少屏幕输出信息
-e 指定监视的modify、move、create、delete、attrib等事件类别。不加此选项时, 监控所有操作
> # inotifywait -mrq /home/xutao
/temp/ OPEN xuchenkai.txt
/temp/ MODIFY xuchenkai.txt
/temp/ CLOSE_WRITE,CLOSE xuchenkai.txt
/temp/ MODIFY .xuchenkai.txt.swp
/temp/ CLOSE_WRITE,CLOSE .xuchenkai.txt.swp
/temp/ DELETE .xuchenkai.txt.swp
…….
在另一个终端执行
> # cd /home/xutao
> # vim xuchenkai.txt
编写shell脚本
#!/bin/bash
# Author: xutao
# version: 1.0
# Action: rsync + inotify file listening synchronization
# nohup /data/rsync.sh >/dev/null 2>&1 &
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 注意rsync下的源一定要加 /
while inotifywait -rq /tmp
do
rsync -avz –delete -a /tmp/ root@192.168.0.2:/tmp
done
rsync 重要参数:
-a –archive :归档模式, 表示递归传输并保持文件属性。等同于”-rtopgDl”。
-v:显示rsync过程中详细信息。
-z:传输时进行压缩提高效率。
–delete:以SRC为主, 对DEST进行同步。多则删之, 少则补之。注意”–delete”是在接收端执行的, 所以它是在:exclude/include规则生效之后才执行的。
原创文章,作者:howkunet,如若转载,请注明出处:https://www.intoep.com/system/linux/62302.html