Linux-(inotify-tools&rsync)

inotifywait命令

mac中的是:fswatch,fsevents-tools。bash

1.命令格式:

inotifywait [参数] [events] [targetDir]socket

2.命令功能:

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

3.命令参数:

inotifywait 最经常使用的选项有两个:spa

-r 表示递归监控子目录中文件发生的事件code

-e 指定要监控的事件列表。blog

对于备份系统来讲,只须要监控 modify、create和delete三种事件就好了。递归

4.使用实例:

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

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

rsync命令

1.命令格式:

rsync [参数] [原目录] [目标目录]同步

2.命令功能:

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

  • 增量备份,只会传输修改过的内容

  • 能够在传输过程当中实时解压缩,减小带宽消耗

  • 能够保持原来文件的权限、事件、软硬连接

  • 即支持本机复制,也支持远程复制

3.命令参数:

-a 表示archive mode,即备份目录下的全部内容(包括子目录中的内容),而且保持软连接、文件属性、文件修改事件、文件的全部者和宿主信息不变,而且同步字符/块设备以及命名socket和fifo等特殊文件。

-v 表示输出备份的详细信息

-z 表示传输时进行压缩

–delete 删除目标目录中源目录中没有的文件

4.使用实例:

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

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
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息