inotifywait、rsync实现文件实时备份

  有时候我们常需要当文件变化的时候便触发某些脚本操作,比如说有文件更新了就同步文件到远程机器。在实现这个操作上,主要用到两个工具,一个是rsync,一个是inotifywait 。inotifywait的作用是监控文件夹变化,rsync是用来同步,可同步到本机的其他目录或者远程服务器上。

1.前提

  主服务器到备份服务器已经设置了免密登录,如果没有,可以参考:https://www.cnblogs.com/hujunwei/p/16007242.html

2.安装rsync

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar zxvf rsync-3.1.1.tar.gz
./configure -prefix=/usr/local/rsync-3.1.1
make
make install

3.安装inotifywait

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

4.备份脚本

rsync

-v:给出哪些文件正在被传输的信息,还会在传输结束时给出一个简要总结信息。两个"-v"选项(-vv)将给出哪些文件被忽略,并且在传输结束时给出更详细的信息
-a:该选项等价于"-rlptgoD"选项的组合。它表示使用归档模式并保留几乎所有属性(明显遗漏了"-H"选项)。
-z:使用该选项,rsync将对发送给目标主机的文件数据(file data)进行压缩,这可以减少传输的数据量——在某些缓慢的连接中可能比较适用。
-u:该选项将强制忽略在目标路径下已存在且修改时间比源文件更新的文件。(如果已存在的目标文件的修改时间和源文件相同,则只在文件大小不同时才会更新)
–progress:该选项告诉rsync显示传输进度信息,这是给那些无聊的用户看的。它隐含了"–verbose"。
–password-file:该选项让rsync在连接rsync daemon时从密码文件中获取密码。密码文件必须可读。该文件中只有第一行是rsync将读取的密码,其他所有行都自动忽略。

适用主机可以免密登录备机

#!/bin/sh
#本地需要同步的目录
SRC=/apps/test

#远程目录
TARGET=/apps/test

#远程ip
IP=192.168.26.181
inotifywait --exclude '\.(part|swp)' -mrq --timefmt '%Y-%m-%d-%H:%M' --format '%T %w %f' -e modify,delete,create,attrib,move,move_self,close_write $SRC | while read file
do
rsync -aP --delete $SRC root@$IP:$TARGET
done

适用于密码登录备机

#!/bin/bash
export CNROMS_SRC=/home/ftpuser/gri/   # 同步的路径,请根据实际情况修改
inotifywait --exclude '\.(part|swp)' -r -mq -e  modify,move_self,create,delete,move,close_write $CNROMS_SRC |
  while read event;
    do
    rsync -vazu --progress  --password-file=/etc/rsyncd_rsync.secret  /home/ftpuser/gri/sla  rsync@10.208.1.1::gri ##这里执行同步的命令,可以改为其他的命令

  done

 

原文地址:http://www.cnblogs.com/hujunwei/p/16905136.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性