参照下面这个网站做了自动代码同步,/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分就会开始启动我们的补数据的脚本了。