zoukankan      html  css  js  c++  java
  • rsync 和 inotify 结合

    我们知道 rsync 可以实现推送和拉取,而 inotify-tools 借助内核的 inotify 机制实现了文件的 实时监控。因此,借助这个思路,我们可以通过使用 shell 脚本,调整 inotifywait 的输出格式, 然后借助 inotifywait 的监控文件或目录实时变化去通知 rsync 做相应的推送或者拉取操作! 实时备份脚本

    [root@rsync-client-inotify ~]# cat auto_rsync.sh

    src1='/data/web/redhat.sx/'

    src2='/data/web_data/redhat.sx/' des1=web

    des2=data host1=172.16.100.1 host2=172.16.100.1 user=rsync_backup

    allrsync='/usr/bin/rsync -rpgovz --delete --progress'

    /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %w

    %f %e' -e modify,delete,create,attr

    ib $src | while read DATE TIME DIR FILE EVENT;

    do

    case $DIR in

    ${src1}*)

    $allrsync $src1 $user@$host1::$des1 --password-file=/etc/rsync.password && echo "

    $DATE $TIME $FILE was rsynced" &>> /var/log

    /rsync-$des1-$host1.log

    $allrsync $src1 $user@$host2::$des1 --password-file=/etc/rsync.password && echo "

    $DATE $TIME $FILE was rsynced" &>> /var/log

    /rsync-$des1-$host2.log;;

    ${src2}*)

    $allrsync  $src2 $user@$host1::$des2 --password-file=/etc/rsync.password && echo "

    $DATE $TIME $FILE was rsynced" &>> /var/lo g/rsync-$des2-$host1.log

    $allrsync  $src2 $user@$host2::$des2 --password-file=/etc/rsync.password && echo "

    $DATE $TIME $FILE was rsynced" &>> /var/lo

    g/rsync-$des2-$host2.log;;                                                                                                        

    esac done 加入开机自启动

    另外,为了保证开机之后自动开始实时同步备份,因此我们需要将该脚本加入开机自启动, 并且设置在启动的时候,将脚本执行输出重定向到指定日志文件以及放到后台运行! [root@rsync-client-inotify ~]# chmod o+x auto_rsync.sh

    [root@rsync-client-inotify ~]# mv auto_rsync.sh /usr/sbin/ [root@rsync-client-inotify ~]# vim /etc/rc.local

    Bash /usr/sbin/auto_rsync.sh &>> /var/log/auto_rsync.log & 我在这里模拟分别向/data/web/redhat.sx 和/data/web_data/redhat.sx 各写入 10 个 10M 的小文件

    [root@rsync-client-inotify ~]# bash /usr/sbin/auto_rsync.sh &>> /var/log/auto_rsync. log &

    [1] 40802

    [root@rsync-client-inotify ~]# for i in {1..10};do dd if=/dev/zero of=/data/web/redhat. sx/$i.html bs=10M count=1 ;dd if=/dev/zero of=/data/web_data/redhat.sx/$i.html bs

    =10M count=1;done

  • 相关阅读:
    Hostker云主机
    Orz 终于有了自己的博客地址
    BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
    BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
    BZOJ 2252: [2010Beijing wc]矩阵距离
    BZOJ 2253: [2010 Beijing wc]纸箱堆叠
    BZOJ 无数据题集合
    BZOJ 1087: [SCOI2005]互不侵犯King
    BZOJ 3236: [Ahoi2013]作业
    POJ2352:Stars
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11327241.html
Copyright © 2011-2022 走看看