美文网首页
利用Rsync和Inotify实现触发式文件同步

利用Rsync和Inotify实现触发式文件同步

作者: HeyLehr | 来源:发表于2020-02-17 15:56 被阅读0次

Rsync

介绍

  • 一款备份工具

  • 异地传输每次要写脚本或者去手动scp就很麻烦

  • 支持完全备份(全部重来)和增量备份(只修改变化的)

  • 差量传输!!!(所以文件多了效率也会低)

工作指令

格式: rsync -options 源文件 远程主机:远程地址

常见参数

-r 对子目录递归处理

-l 拷贝链接文件

-p 保持权限

-t 保持原文件时间

-g 保持原组

-o 保持所属者

-D 表示块设备文件信息

-z 表示压缩传输

-H 表示硬连接文件

-P 显示进度

--delete 删除远程地址里不同步的多出来的文件

-a 就是-rlptgoD的缩写

所以我们一般使用:-azP

准备

  • 如果你是CentOS就yum

  • 如果你是Ubuntu系就apt

  • 如果你是Mint玩家那就已经自带了

  • 然后为了懒得演示输入密码的过程,就提前做好秘钥配对

ssh-keygen + ssh-copy-id不解释

Ps: 因为我比较懒所以直接root了(然而我知道这样是不好的......

实战

文件创建

A机:创建目录/myRsync,并在本目录下创建10个文件

image-20200121120134619

B机:创建目录/myBackup,里面什么都没有

image-20200121115850583

开始传输

A机:

image-20200121120255733

输入:rsync -azP --delete "本机目录" 远程登录的用户@远程主机:远程位置 (后面和scp是一样的)

image-20200121120459550

传输成功!!!

看看B机:

image-20200121120523021

Done!

出现的小问题

  • 每次都是手动push
  • 如果用定时的话,很浪费资源
  • 所以能不能在每次文件改变的时候自动push呢?

当然可以了!!!

结合inotify-tools

inotify-tools是什么

inotify说白了就是内核提供的一个文件系统事件监控机制(所以你要用的话前提是你内核版本高于2.6.13)

而inotify-tools就是一个可以利用这个内核接口获取情况的工具

所以说我们利用这个东西再结合上rsync就可以实现自动备份啦!

安装tools

image-20200121121811517

简单使用

首先来看两个东西:

inotifywait:比较常用,检查文件是否被操作(执行后处于阻塞状态)

inotifywatch:多偏向于统计次数

我们来看下面一个例子:

image-20200121133741253

我们使用到了这条指令:

inotifywait -mrq -e create,delete,modify /myRsnyc/

这条指令的意思就是:监听这个文件夹里发生的创建,修改,删除操作(-e就是指定监听指定的事件,如果省略,表示所有事件都进行监听,一共有四种选择,我们选了三种,还有一种是close_write),而且始终保持事件监听(-m)、递归监控目录数据信息变化(-r)、只打印事件信息(-q)

所以我们接下来可以写一个组合脚本来进行自动处理了

结合脚本

这里我们先做一个单相同步:把A机的新文件自动同步到B机去

脚本如下:

# !/bin/bash
a="inotifywait -mrq -e create,delete,modify,close_write /myRsync/"    #表示我们会去监听/myRsnc这文件夹里的所有事件
b="rsync -azP  --delete /myRsync/* root@192.168.3.84:/backup"    #表示我们要执行的rsync指令,和之前一样的

$a | while read directory event file
do
        $b
done

跑一下试试:

输入nohup ./你的文件的位置/脚本名字.sh &

那个&代表让其自动运行,不被ctrl+c杀掉,当然如果你账户退出了也一样没了,所以结合了nohup使用,一直挂在后台运行.

另外注意一下给脚本权限(我懒我root别学我)

image-20200121141038507

整挺好的,不错,就这样了

相关文章

网友评论

      本文标题:利用Rsync和Inotify实现触发式文件同步

      本文链接:https://www.haomeiwen.com/subject/wznbfhtx.html