试验Rsync+Inotify-tools实现数据实时同步

参照下面这个网站做了自动代码同步,/usr/local/inotify/rsync.sh脚本部分修改自己试验的结果,特别小心路径的斜杠符号双冒号::只在rsync服务器设置了模块时启用如果没有配置模块不能使用它。

http://www.osyunwei.com/archives/7435.html

提前做了免密码认证,所以在配置时相关参数无需添加

#!/bin/sh

srcdir=/home/staff/

dstdir=/home/staff

excludedir=/usr/local/inotify/exclude.list

rsync -avH --progress --delete  --exclude-from=$excludedir  $srcdir [email protected]:$dstdir

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

 close_write,modify,delete,create,attrib,move $srcdir |  while read file

do

rsync -avH --progress --delete  --exclude-from=$excludedir  $srcdir [email protected]:$dstdir

echo "  ${file} was rsynced" >> /tmp/rsync.log 2>&1

done

特别小心rsync命令--delete选项,如果路径错误它就会删除root根目录里面的所有文件。

+++++++++++++++++++++++++++++++++++++++++++++++++++


假设我要设置一个任务,每分钟就要做一个数据同步,这个同步脚本的路径是/home/blue/do/rsyncfile.sh,那么我可以在这么配置,使用blue用户,在终端输入

1crontab -e

2# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。

3#分 时 日  月 周      |<==============任务的完整命令行

4 *  *  *  *  *       /home/blue/do/rsyncfile.sh

默认情况下,任何使用者只要不被列入 /etc/cron.deny 当中,那么他就可以直接下达『 crontab -e 』去编辑自己的例行性命令了!整个过程就如同上面提到的,会进入 vi 的编辑画面, 然后以一个工作一行来编辑,编辑完毕之后输入『 :wq 』储存后离开 vi 就可以了! 

 假如我们需要修改为每5分钟运行数据同步的脚本,那么同样使用 crontab -e 进入编辑:

1 */5 * * * *  /home/blue/do/rsyncfile.sh

假如服务器出了问题,有一天的数据没有同步,于是我们就需要补数据了,假设这个补数据的脚本是/home/blue/do /rsyncfile_day.sh,但是白天是高峰期,晚上用户不多,是低峰期,我们补数据会占用大量带宽,尤其是白天,会影响正常业务,所以一般我们 可以让补数据任务在凌晨2点开始跑,那么同样使用crontab -e 进入编辑:

1 0 2 1 4 *  /home/blue/do/rsyncfile_day.sh

这样,在4月1号凌晨2点0分就会开始启动我们的补数据的脚本了。


你可能感兴趣的:(试验Rsync+Inotify-tools实现数据实时同步)