rsync+inotify 实现自动同步

Posted hjnzs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify 实现自动同步相关的知识,希望对你有一定的参考价值。

一、定期同步和自动同步的区别
定期同步:

执行备份的时间固定,延期明显,实时性差 当同步源长期不变化时,密集的定期任务是浪费资源的。

自动同步:

一旦同步源出现变化,立即启动备份,实时性好 只要同步源无变化,则不执行备份,节省资源。

二、inotify
1、inotify 简介

inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事 件警告,比如删除、读、写和卸载操作等。要使用 inotify,必须具备一台带有 2.6.13 版本的内核操作系统。
inotify 两个监控命令:

  • inotifywait:用于持续监控,实时输出结果。
  • inotifywatch:用于短期监控,任务完成后再出结果。
2、安装 inotify
#tar -zxvf inotify-tools-3.13.tar.gz
#cd inotify-tools-3.13
# ./configure && make && make install
3、inotify 命令
格式:inotifywait -mrq -e 监控动作 1,监控动作 2  /监控目录 & 
示例:inotifywait -mrq -e create,delete /share &  
    -m:始终保持事件监听状态  
    -r:递归查询目录  
    -q:只打印监控事件的信息 
监控动作:
    modify(内容)
    create
    attrib(权限)
    move
    elete 
三、用脚本实现单向备份
1、单向备份脚本
[root@centos ~]# cat sy.sh 
#!/bin/bash
rs_script="inotifywait -mrq -e create,delete /share"
ny_script="rsync -avz /share/* root@100.100.100.105:/root/test/"
$rs_script|while read
do
echo "备份开始..."
    $ny_script  
echo "备份结束..."
done
#最好配置免密登录
2、在/share目录下进行文件删除,或者创建,看是否能够进行自动备份
四、unison+inotify 实现双向实时同步

rsync 在单向同步上支持的非常好,且效率很高,但是在双向同步支持较差;unison 则是双向同步的 优秀工具,但其缺点是同步效率较低。

1、环境准备

1.1、配置免密登录

#### 100.100.100.103
# ssh-keygen -t rsa -b 2048
# ssh-copy-id root@100.100.100.105
# mkdir /filesrc

#### 100.100.100.105
# ssh-keygen -t rsa -b 2048
# ssh-copy-id root@100.100.100.103
# mkdir /filedst
2、安装软件(都需要安装)

2.1、安装 inotify

# tar -zxvf inotify-tools-3.13.tar.gz
# cd inotify-tools-3.13
# ./configure && make && make install

2.2、安装 ocaml

# tar -zxvf ocaml-3.10.2.tar.gz 
# cd ocaml-3.10.2
# ./configure 
# make world opt && make install

2.3 安装 unison

# tar -zxvf unison-2.13.16.tar.gz 
# cd unison-2.13.16
# make UISTYLE=text THREADS=true STATIC=true
# cp unison /usr/local/bin/
3、脚本配置
#### 100.100.100.103
#!/bin/bash
rs_script="inotifywait -mrq -e create,delete,modify /filesrc"
ny_script="/usr/local/bin/unison -batch /filesrc/ ssh://100.100.100.105//filedst/"
$rs_script| while read
do
        $ny_script
done

#### 100.100.100.105
#!/bin/bash
rs_script="inotifywait -mrq -e create,delete,modify /filedst"
ny_script="/usr/local/bin/unison -batch /filedst/ ssh://100.100.100.103//filesrc/"
$rs_script| while read 
do
        $ny_script
done
4、运行脚本,测试
./rc.sh &

以上是关于rsync+inotify 实现自动同步的主要内容,如果未能解决你的问题,请参考以下文章

centos7中配置rsync+inotify实现自动监控数据同步

Rsync+Inotify实现文件自动同步

使用rsync服务通过inotify实现触发式自动同步数据

rsync+inotify实时同步

rsync+inotify实时同步

inotify介绍及rsync + inotify 实时同步备份