天天看点

rsync+inotify实时同步一、rsync简介二、rsync+inotify实现远程同步

rsync文件实时同步

  • 一、rsync简介
    • rsync
    • rsync特性
  • 二、rsync+inotify实现远程同步
    • 1、环境准备
      • ①两台主机
      • ②创建同步的目录
    • 2、主机免密登录
      • ①配置免密登录
      • ②验证免密登录
    • 3、rsync服务安装介绍
      • ①安装rsync服务
      • ②启动服务
      • ③同步测试
    • 4、inotify监控程序安装介绍
      • ①inotify监控安装
      • ②监控测试
    • 5、编写实时同步脚本并测试
      • ①编写实时同步脚本
      • ② 测试脚本

一、rsync简介

rsync

rsync(remote synchronize)是linux下一款开源的数据镜像备份工具。可以使本地的不同分区、不同目录之间快速实现数据同步,也可实现远程主机之间的数据快速同步,达到数据备份的效果。同步的文件可以保持原来文件的权限、时间、软硬链接等附加信息。

rsync特性

①镜像保存整个目录树和文件系统

②保持原来文件的权限、时间、软硬链接等等

③无需特殊权限即可安装

④快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件。rsync在传输的过程可以实时的压缩和解压缩操作,因此可以使用更少的带宽。

⑤安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的scket连接。

⑥支持匿名传输,以方便进行网站镜像

二、rsync+inotify实现远程同步

1、环境准备

背景:通过rsync+inotify 同步/test71/目录到/test72/ 达到快速备份的效果

①两台主机

主机:192.168.105.71

192.168.105.72

②创建同步的目录

192.168.105.71上:

192.168.105.72上:

2、主机免密登录

①配置免密登录

192.168.105.71上:

[[email protected] ~]# ssh-keygen
[[email protected] ~]# ssh-copy-id [email protected]
           

②验证免密登录

3、rsync服务安装介绍

rsync常用的几个参数(详情请man rsync):

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-v, –verbose 详细模式输出。

-z, –compress 对备份的文件在传输时进行压缩处理。

– --delete 删除目标文件夹内多余的文档。

-q, –quiet 精简输出模式。

-r, –recursive 对子目录以递归模式处理。

-R, –relative 使用相对路径信息。

-h, –help 显示帮助信息。

例如:

rsync --delete -avz /test71/ [email protected]:/test72/

①安装rsync服务

②启动服务

[[email protected] ~]# systemctl restart rsyncd
[[email protected] ~]# systemctl enable rsyncd
           

③同步测试

71主机上面:

[[email protected] ~]# cd /test71/
[[email protected] test71]# touch haha.txt
[[email protected] test71]# rsync -avPz --delete --progress /test71/ 192.168.105.72:/test72/
           

观察72主机目录变化:

[[email protected] ~]# cd /test72/ ;ls -rlht 
总用量 0
-rw-r--r--. 1 root root 0 11月 21 13:45 haha.txt
           

4、inotify监控程序安装介绍

inotify

Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象

–用法参数详解

-e:事件

-d:后台运行

-m:始终保持事件监听状态

-q:打印很少的信息,仅仅打印监控事件的信息 安静状态

-r :递归查询目录

-timefmt:指定时间输出的格式

-excluder:排除文件或者目录的时候不区分大小写

①inotify监控安装

下载inotify-tools-3.13.tar.gz包并上传到192.168.105.71上:

解包

编译安装

[[email protected] ~]# cd /inotify-tools-3.13/
[[email protected] inotify-tools-3.13]# ./configure
[[email protected] inotify-tools-3.13]# make && make install
           

②监控测试

输入测试进程后,另起一个终端,cd /test71/ ;touch haha1.txt,效果如下:

[[email protected] test71]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /test71/
21/11/19 13:52 /test71/haha1.txt
21/11/19 13:52 /test71/haha1.txt
           

5、编写实时同步脚本并测试

①编写实时同步脚本

[[email protected] ~]# vi rsync.sh
#!/bin/bash
host=192.168.105.72
src1=/test71/
src2=/test72/
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src1 | while read file
do
rsync -avPz --delete --progress $src1 $host:$src2
echo "${file} was rsynced" >>/root/rsync.log
done
           

② 测试脚本

使用nohup执行脚本并放入后台,防止终端断开脚本中段

在71机子上创建文件

在72机子上查看效果如下

[[email protected] ~]# ls -rlht /test72/
总用量 0
-rw-r--r--. 1 root root 0 11月 21 13:45 haha.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha1.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha9.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha8.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha7.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha6.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha5.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha4.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha3.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha2.txt
-rw-r--r--. 1 root root 0 11月 23 01:49 haha10.txt
           

继续阅读