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

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

(2)
如何用Nginx实现对城市以及指定IP的访问限制?
上一篇 2023-05-21 17:37
Nginx集群搭建
下一篇 2023-11-30 10:50

相关推荐

  • Linux可视化管理工具,Cockpit安装及使用

    Linux可视化管理工具,Cockpit安装及使用Linux可视化管理工具,Cockpit安装及使用Linux可视化管理工具,Cockpit安装及使用Linux可视化管理工具,Cockpit安装及使用

    推荐一款轻量级、零门槛的Linux可视化管理工具——Cockpit。它就像给Linux装了个”控制面板”,用浏览器就能监控系统状态、管理服务、配置网络,甚至…

    2025-07-21 Linux
    3.8K0
  • Linux服务器中毒?教你一步步精准判断和快速处置

    Linux服务器中毒?教你一步步精准判断和快速处置Linux服务器中毒?教你一步步精准判断和快速处置Linux服务器中毒?教你一步步精准判断和快速处置Linux服务器中毒?教你一步步精准判断和快速处置

    一、表现异常:如何发现中毒的初步迹象? 系统性能突然下降 检查是否有异常的用户进程(如以 nobody、www-data 运行的可疑程序)。 网络流量异常激增 使用 iftop 或…

    2025-01-21 Linux
    3.0K0
  • Linux本地部署DeepSeek,ollama+DeepSeek+Open WebUI部署教程

    安装 ollama https://ollama.com/download/linux 在 Linux 服务器上安装的,一行命令就可以。如果是 Windows 的话,下载安装包就行…

    2025-02-03
    4.8K2
  • Linux根目录功能全览

    Linux 根目录功能介绍 /bin (二进制文件) 存放常用可执行文件,如 ls、cp 等,适用于单用户模式。 /boot (启动目录)包含内核文件和引导加载程序。 /dev (…

    2025-03-23
    2.2K0
  • Linux 远程数据同步工具详解

    Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快;

    2022-12-13
    1.8K0
  • Linux定时任务工具crontab入门

    Linux定时任务工具crontab入门Linux定时任务工具crontab入门Linux定时任务工具crontab入门Linux定时任务工具crontab入门

    Linux crontab是用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。 crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会…

    2022-01-04 Linux
    1.9K0

发表回复

登录后才能评论
扫码了解
扫码了解
反馈建议
分享本页
返回顶部