• 高清:创意十足!杭州萌娃毕业照留下成长足迹 2019-04-08
  • 上交所:存托凭证上市首日不实行价格涨跌幅限制 2019-04-08
  • 谁拆迁都是一样一片狼藉,拆迁时欢天喜地,回迁时垂头丧气。拆迁者得到好处,被拆者哭天喊地。 2019-04-07
  • 网上支付出现异常如何解决? 2019-04-07
  • [微笑]咱建议进一步提高挂号费标准,最起码也得200元起步…… 2019-03-30
  • 一语惊坛(5月30日):磋商,不等于反复折腾。 2019-03-16
  • 全国彩票开奖结果:使用inotify-tools与rsync构建实时备份系统

    使用inotifywait监控文件变动

    inotifywait是?inotify-tools?包中提供的一个工具,它使用?inotify?API 来监控文件/目录中的变动情况。

    在archlinux上,我们可以使用下面命令来安装

    sudo pacman -S --noconfirm inotify-tools

    平时?inotifywait?会挂起在那里,直到文件/目录发生了要引起关注的事件后,它会退出并输出事件发生的场所、事件的名称以及引起事件的文件(当事件发生在目录上时才会输出).

    inotifywait?最常用的选项有两个,一个是?-r?一个是?-e?,其中:

    -r
    表示递归监控子目录中文件发生的事件
    -e
    指定要监控的事件列表。对于备份系统来说,只需要监控 modify、create和delete三种事件就行了。

    比如,我们运行

    inotifywait -r -e modify,create,delete /tmp

    表示监控?/tmp?目录及其子目录中文件修改、文件创建和文件删除三种事件。

    这时程序一直在挂起状态

    [[email protected] ~]$ inotifywait -r -e modify,create,delete /tmp
    Setting up watches.  Beware: since -r was given, this may take a while!
    Watches established.

    这时在?/tmp?目录下新建一个文件

    touch /tmp/newFile

    则?inotifywait?进程退出,并输出如下信息

    /tmp/ CREATE newFile

    使用rsync同步变动

    rsync是一款快速增量备份工具。它的具有以下几个特点使得它很适合用作做备份的工具:

    • 增量备份,只会传输修改过的内容
    • 可以在传输过程中实时解压缩,减少带宽消耗
    • 可以保持原来文件的权限、事件、软硬链接
    • 即支持本机复制,也支持远程复制

    rsync常用法为:

    rsync -avz --delete  src/ foo:/data

    其中

    -a
    表示archive mode,即备份目录下的所有内容(包括子目录中的内容),并且保持软链接、文件属性、文件修改事件、文件的所有者和宿主信息不变,并且同步字符/块设备以及命名socket和fifo等特殊文件。
    -v
    表示输出备份的详细信息
    -z
    表示传输时进行压缩
    –delete
    删除备份目的地里src中没有的文件
    src/
    表示要备份的是src目录下的所有内容,注意这里最后的?/?不能去掉,否则会把src目录本身备份过去
    foo:/data
    表示备份的目的地是foo主机下的?/data/?目录

    整合起来

    接下来我们只需要用个?while?死循环把两个工具整合起来就行了,非常简单

    #!/bin/bash
    
    if [[ $# -ne 2 ]];then
        cat<<EOF
    Usage $(basename $0) source_dir [host:]dest_dir
    EOF
        exit 0
    fi
    
    source_dir=$1
    dest_dir=$2
    while :
    do
        inotifywait -r -e modify,create,delete ${source_dir} && rsync -avz ${source_dir}/ ${dest_dir} --delete
    done

    这里有必要说明的是,虽然用?inotifywait?能探测出文件具体做了什么改动,但实际上我们根本不需要知道具体的改变是什么。

    我们只需要知道有所改变了,然后具体改变了什么由?rsync?来自己处理就行了。



    相关文章

    发表评论

    Comment form

    (*) 表示必填项

    还没有评论。

    广东好彩36开奖结果
    返回顶部
  • 高清:创意十足!杭州萌娃毕业照留下成长足迹 2019-04-08
  • 上交所:存托凭证上市首日不实行价格涨跌幅限制 2019-04-08
  • 谁拆迁都是一样一片狼藉,拆迁时欢天喜地,回迁时垂头丧气。拆迁者得到好处,被拆者哭天喊地。 2019-04-07
  • 网上支付出现异常如何解决? 2019-04-07
  • [微笑]咱建议进一步提高挂号费标准,最起码也得200元起步…… 2019-03-30
  • 一语惊坛(5月30日):磋商,不等于反复折腾。 2019-03-16