Linux下文件实时和增量同步–rsync+inotify

Inotify是一个 Linux特性, 它监控文件系统操作, 比如读取、写入和创建。Inotify 反应灵敏, 用法非常简单, 并且比 cron 任务的繁忙轮询高效得多, 只要使用Inotify文件有变动+rsync命令同步有变化的文件, 这样就达到增量备份的需求

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规则生效之后才执行的。

Intoep小程序

微信扫一扫,打开小程序浏览更便捷

原创文章,作者:howkunet,如若转载,请注明出处:https://www.intoep.com/system/linux/62302.html

发表回复

登录后才能评论