2013年(3)
分类: 其他平台
2013-08-02 16:52:17
rsync+inotify搭建实时同步文件
rsync是linux、UNIX系统下的文件同步数据传输工具,他采用rsync算法使一个客户机和远程文件服务器之间的文件同步。通过 rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;rsync可以在中 断之后恢复复制,rsync只传输源文件和目标文件不一致的部分,rsync可以执行完整备份或增量备份。
inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13版本起,加入了对inotify的支持。通过inotify可以监控 文件系统中添加、删除、修改、移动等各种细微事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,inotify-tools就是 这样的一个第三方软件。
系统环境
系统:Centos 5.4
A:192.168.59.128 server
B:192.168.59.129 client
client 向 server 传输数据。
Server配置:
用YUM方式安装rsync
yum -y install rsync
# mkdir -p /etc/rsyncd 创建主目录
# touch /etc/rsyncd/rsyncd.conf 创建rsync主配置文件
# touch /etc/rsyncd/rsyncd.secrets 创建密码文件
# chmod 600 /etc/rsyncd/rsyncd.secrets 修改文件属性为600
# vi /etc/rsyncd/rsyncd.secrets 创建用户名和密码(jeffstan:123456)
# touch /etc/rsyncd/rsyncd.motd 创建说明文档
# vi /etc/rsyncd/rsyncd.conf 修改主配置文件
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.59.128
uid =root
gid = root
use chroot = yes
read only = no
hosts allow = *
write only = no
strict modes = yes
motd file = /etc/rsyncd/rsyncd.motd
timeout = 300
transfer logging = yes
log file = /var/log/rsync.log
[ temp ]
path = /tmp/temp
list = false
ignore errors
auth users = jeffstan
secrets file = /etc/rsyncd/rsyncd.secrets
exclude = error_log httpd.pid
# /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf 启动守护进程
# echo "/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf" >>/etc/rc.local 将启动进程加入到开机自动启动中
配置inotify client配置:
安装inotify需要linux内核的支持,再安装inotify-tools前需确认linux系统内核是否是2.6.13以上的版本。
安装inotify-tools-3.14.tar.gz
# tar -zxvf inotify-tools-3.14.tar.gz 解压
# ./configure
# make
# make install
查看是否有安装
# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 47104 07-31 13:45 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 43418 07-31 13:45 /usr/local/bin/inotifywatch
# mkdir -p /etc/rsyncd
# touch /etc/rsyncd/rsyncd.password
# echo "1234567" > /etc/rsyncd/rsyncd.password
# chmod 600 /etc/rsyncd/rsyncd.password
# touch /etc/rsyncd/rsync.log
# mkdir /qt 脚本中有定义
创建脚本
# vi /inotify.sh
#!/bin/bash
host=192.168.92.128
src=/qt/
dst=webqq
user=xiaolu
/usr/local/bin/inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd/rsyncd.password $src $user@$host::$dst
echo "${files} was rsyncd" >>/etc/rsyncd/rsync.log 2>&1
done
# chmod 755 inotify.sh 设置脚本权限
# /inotify.sh & 运行脚本 至后台
# echo "/inotify.sh & " >> /etc/rc.local 加入开机自动启动