rsync+inotify配置
下载rsync源码:http://rsync.samba.org
安装rsync
#tar zxvf rsync-3.1.2.tar.gz #cd rsync-3.1.2 #./configure #make && make install
rsync有四种应用模式
shell模式(本地模式)
远程shell模式(利用ssh)
查询模式(列表模式)
服务器模式
#rsync SRC DST
例:
本地模式:
#rsync -av /root /tmp 复制/root目录及其文件到/tmp下 #rsync -av /root/ /tmp 复制/root目录下的文件到/tmp下 -a --archive 归档模式 -v --verbose 输出详细模式信息
远程模式:
#rsync -av /root 192.168.0.99:/tmp
列表模式:
#rsync -a 192.168.0.99:/tmp 查看远程主机上的/tmp目录下的内容
rsync服务器端配置文件/etc/rsyncd.conf(需手动创建)包含全局参数和模块参数
uid = nobody #当该模块传输文件时守护进程的用户ID,默认nobody gid = nobody #当该模块传输文件时守护进程的用户组ID,默认nobody use chroot = no max connections = 10 #指定模块最大并发连接数,默认为0,没有限制 strict modes = yes #是否检查口令文件权限,yes时密码文件必须是root用户权限 pid file = /var/run/rsyncd.pid #rsync守护进程的PID文件路径 lock file = /var/lock/rsyncd.lock #指定支持max connections的锁文件,默认是/var/run/rsyncd.conf log file = /var/log/rsyncd.log #rsync日志文件路径 [data] #定义模块名称 path = /data #需要备份的文件 comment = test rsync #说明 ignore errors #忽略一些无关的I/O错误 read only = no #yes为只读,no表示可以上传文件 write only = no #yes表示不能下载,no表示可以下载 hosts allow = * #允许连接的主机 hosts deny =192.168.0.103 #禁止连接的主机 list = false #设定用户请求可用的模块列表时,该模块是否被列出,默认ture(列出) uid = root # gid = root # auth user =backup #定义可连接模块的用户名,多个用逗号隔开。与系统用户无关 secrets file = /etc/rsync/server.pass #存储auth user定义的用户密码文件路径。格式“用户:密码”
server.pass文件
backup:123456
修改文件权限
#chmod 600 /etc/rsync/server.pass
客户端也要保存该文件但只保存密码
/etc/rsync/server.pass
123456
在服务器端开启服务
#/usr/local/bin/rsync --daemon
在客户端执行
#/usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exclude "debug*" backup@192.168.0.99::data /data --password-file=/etc/rsync/server.pass
在-vzrtopg中
v --verbose 详细输出模式
z --compress 在传输对文对文件进行压缩处理
r --recursi 对子目录以递归模式处理
t --times 保持文件时间信息
o --owner 保持文件属主信息
p --perms 保持文件权限
g --group 保持文件属组信息
--delete 指定以rsync服务器端为基准进行数据镜像同步
--progress 显示同步过程
--exclude 用于排除不需要传输的文件类型
backup@192.168.0.99::data 表示使用backup用户对192.168.0.99的data模块备份
/data 备份文件保存的目录
--password-file=/etc/rsync/server.pass 客户机上存放密码的文件
inotify可以监控文件系统中的添加、删除、修改、移动等操作,触发rsync来备份
下载inotify-tools:http://inotify-tools.sourceforge.net/
安装inotify-tools
#tar zxvf inotify-tools-3.14.tar.gz #cd inotify-tools-3.14 #./configure #make && make install
在/usr/local/bin下有两个命令inotifywait和inotifywatch
inotifywait用于等待文件或文件集上的一个特定事件,可以监控任何文件和目录,也可递归监控整个目录树
inotifywatch用于收集被监控的文件系统统计数据,包括inotify事件发生多少次等信息
inotifywait的常用参数
-m --monitor 表示保持事件始终监听
-r --recursive 表示递归查询目录
-q --quiet 表示打印出监控事件
-c --event 指定要监控的事件(modify,delete,create,attrib等)
编写脚本来监控文件变化并完成同步
inotifyrsync.sh脚本
#!/bin/bash # HOST1=192.168.0.96 SRC=/data DST1=data user1=backup /usr/local/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $SRC | while read file do /usr/local/bin/rsync -vzrtopg --delete --progress --password-file=/etc/r sync/server.pass $SRC $user1@$HOST1::$DST1 &> /dev/null done
本文出自 “繁华落尽” 博客,请务必保留此出处http://chenxujiang.blog.51cto.com/11737025/1852125
原文地址:http://chenxujiang.blog.51cto.com/11737025/1852125