用这个小工具解决了Linux下文件实时和增量同步两大问题

简介: 用这个小工具解决了Linux下文件实时和增量同步两大问题

在运维过程中,通常有备份文件的需求,也就是把一些不能存储在数据库的文件备份到一个指定的目录。有人可能会说,使用系统的定时工具,写个脚本就好了,每隔一段时间执行一下备份任务。


image.png


但不失为一种方法,但我想在有数据变动的情况下才执行备份任务,没有变化的情况不执行,能否实现呢?

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


Inotify安装


# 安装基本编译环境
# Rhel && CentOS
sudo yum install gcc make
# Ubuntu
sudo apt install gcc make
# 下载Inotify工具
sudo wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# 解压
sudo tar -xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
# 配置、编译和安装
sudo ./configure
sudo make && make install

安装完成之后会在/usr/local/bin/inotifywait下生成可执行文件, 使用以下命令时,屏幕输出正常则安装成功。

[root@blog ~]# inotifywait --help
inotifywait 3.14


image.png

命令用法


inotifywait [选项] 目标文件夹

#常用命令选项:
-m,持续监控(捕获一个事件后不退出)
-r,递归监控,包括子目录及文件
-q,减少屏幕输出信息
-e,指定监视的modify、move、create、delete、attrib等事件类别。不加此选项时,监控所有操作

来测试一下,在任一目录创建一个temp文件夹,使用inotifywait命令监控。

inotifywait -mrq temp/

另起一个shell窗口,创建一个空文件,可以发现监控中有多种事件产生。


image.png


由此可见,在对文件夹操作时,的确可以监控到时间。


脚本实现


脚本逻辑,当inotifywait捕获到事件时,将文件备份到指定文件夹中,基本逻辑:

while inotifywait -rq  监控文件夹
  do
  #重复执行同步代码
 done

比如:

#!/bin/bash
#注意rsync下的源一定要加/
while inotifywait -rq /tmp
 do 
  rsync --delete -a /tmp/  root@192.168.0.2:/tmp
 done

大家也可以使用-e参数,只在指定的事件下执行,或搭配其它脚本命令使用。发挥想象力吧!

相关文章
|
16天前
|
监控 Unix Linux
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
Linux操作系统调优相关工具(四)查看Network运行状态 和系统整体运行状态
30 0
|
23天前
|
存储 前端开发 Linux
Linux系统之部署ToDoList任务管理工具
【4月更文挑战第1天】Linux系统之部署ToDoList任务管理工具
63 1
|
23天前
|
人工智能 安全 Linux
【Linux】Linux之间如何互传文件(详细讲解)
【Linux】Linux之间如何互传文件(详细讲解)
|
16天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
21 0
|
1天前
|
人工智能 Linux
Linux查找大文件的方法
Linux查找大文件的方法
|
2天前
|
JSON Unix Linux
Linux系统之jq工具的基本使用
Linux系统之jq工具的基本使用
26 1
|
2天前
|
监控 安全 Linux
Linux系统之安装ServerBee服务器监控工具
【4月更文挑战第22天】Linux系统之安装ServerBee服务器监控工具
40 2
|
2天前
|
编解码 Linux 数据安全/隐私保护
linux工具之curl与wget高级使用
linux工具之curl与wget高级使用
|
3天前
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
11 1
|
3天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(24) 如何在Ubuntu中操作rootfs.img文件
Linux(24) 如何在Ubuntu中操作rootfs.img文件
8 0