我们知道 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

最新文章

  1. [转载]:STM32为什么必须先配置时钟再配置GPIO
  2. 1Z0-053 争议题目解析606
  3. 艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布
  4. 框架集(Framesets)
  5. 黄聪:C#带cookie模拟登录百度
  6. GDB打印STL容器内容
  7. jquery select处理
  8. 转载 C#结构体(struct)和类(class)的区别
  9. Flexbox完整指南- A Complete Guide to Flexbox
  10. HTML5下通过response header解决跨域AJAX cookie的问题
  11. python正则表达式练习篇
  12. 【转】OpenCV中使用神经网络 CvANN_MLP
  13. Thymeleaf模板的使用
  14. MongoDB 3.0 WiredTiger Compression and Performance
  15. Jmeter_从jdbc请求的响应中获取参数做关联
  16. Linux常用资源(不断改进中)
  17. Lunix服务器上项目迁移命令
  18. XRecyclerView上拉刷新下拉加载
  19. why-the-default-authentication-hadoop-is-unsecured ?
  20. 在windows上部署使用redis出现的问题及解决方法

热门文章

  1. Apache主要配置文件http.conf
  2. c++复习——类(1)
  3. mac 电脑设置密码可以直接使用 passwd 这个命令
  4. java 中 进程和线程的区别
  5. np.asarray(a, dtype=None, order=None)
  6. rich-text 副文本组件 text文本组件
  7. React-Native 之 GD (七)下拉刷新 及 上拉加载更多
  8. Web网站安全
  9. leetcode-mid-Linked list- 230 Kth Smallest Element in a BST
  10. Linux内核调试方法总结之bugreport