rsync+inotify实现实时同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify实现实时同步相关的知识,希望对你有一定的参考价值。
服务端:
一、首先安装rsync,接着编辑配置文件,若没有,自己手动创建也可
rsync、xinetd (rsync最好是3.0以上版本,算法更优,速度更快.xinetd 监控管理rsync服务)
/etc/rsyncd.conf
uid = www
gid = www
use chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[web]
path = /var/www/html/
ignore errors
read only = no
list = no
hosts allow = 192.168.72.0/24
auth users = rsync
secrets file = /etc/rsyncd.password
编辑 /etc/xinetd.d/rsync 配置(若没有可以自己手动写)
cat /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait= no
user= root
server= /usr/bin/rsync
server_args= --daemon
log_on_failure+= USERID
}
把yes 改为 no
useradd -r rsync (配置文件中指定的用户,若没有的话,手动添加一个系统用户即可)
systemctl restart xinetd.service
查看端口是否被启动(默认873)
lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 6830 root 5u IPv6 53674 0t0 TCP *:rsync (LISTEN)
二、修改权限
chown -R www: /var/www/html/www.rsync-server.com/
ll -dh www.rsync-server.com/
drwxr-xr-x. 2 www www 23 Nov 13 06:42 www.rsync-server.com/
创建用户认证文件 (自己手动创建)
echo "rsync:password" > /etc/rsyncd.password
修改认证文件权限,安全起见
chmod 600 /etc/rsyncd.password
客户端:
这里只需要密码即可,不需要用户,免得要同步时,还要进行手动互动,权限一样为600
echo "password" > /etc/rsyncd.password
chmod 600 /etc/rsyncd.password
执行命令
rsync -vzrtopg --delete [email protected]::web /var/www/html/www.rsync-server.com/ --password-file=/etc/rsyncd.password
三、服务端安装inotify
tar -xvf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure
make -j $CPU
make install
修改内核参数
sysctl -a | grep inotify
fs.inotify.max_queued_events = 16384 表示监控事件队列
fs.inotify.max_user_instances = 128 表示最多监控实例数
fs.inotify.max_user_watches = 900000 表示每个实例最多监控文件数
sysctl -a | grep inotify >> /etc/sysctl.conf 写进系统文件中
sysctl -p 重新读取配置
inotify常用参数及配置
inotifywait -h
-e 用来指定要监控哪些事件
这些事件包括:create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。
-m 表示持续监控
-r 表示递归整个目录
-q 表示简化输出信息
inotifywait -mrq -e create,move,delete,modify /path/filename 回车后会卡着不动,然后在另一个终端给/path/filename目录下读,写,改,删的动作时,便会触发它的机制
写个脚本来让它监控到动作
cat rsync+inotify.sh
#!/usr/bin/bash
inotifywait -mrq -e create,move,delete,modify /var/www/html/www.rsync-server.com/ | while read DNF
do
rsync -vzrtopg --delete /var/www/html/www.rsync-server.com/ [email protected]::rsync-client --password-file=/etc/rsyncd.shadow
done
chmod 600 /etc/rsyncd.shadow(必须是600或更小权限,否则会报错)
ERROR: password file must not be other-accessible
客户端配置rsync
useradd -r www 同步文件拥有人用户
useradd -r rsync 认证用户
echo "rsync:rsync-passwd" > /etc/rsync.pass 用户、密码
cat /etc/rsyncd.password 密码认证文件 rsync命令同时时使用
rsync:rsync-passwd
mkdir /var/www/html/www.rsync-server.com -p 创建同步服务端给客户端同步的目录
chown -R www: /var/www/html/www.rsync-server.com/www.rsync-server.com/
rsync配置
cat /etc/rsyncd.conf
uid = www
gid = www
use chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[rsync-client]
path = /var/www/html/www.rsync-server.com
ignore errors
read only = no
list = no
hosts allow = 192.168.72.0/24
auth users = rsync
secrets file = /etc/rsyncd.password
xinetd 配置
cat /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait= no
user= root
server= /usr/bin/rsync
server_args= --daemon
log_on_failure+= USERID
}
systemctl restart xinetd
cat /etc/rsyncd.shadow
rsync-passwd
查看端口启用状态
lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 6469 root 5u IPv6 52078 0t0 TCP *:rsync (LISTEN)
服务端运行脚本
nohup ./rsync+inotify.sh & 并在/var/www/html/www.rsync-server.com/目录中随意创建,修改或删除文件,在客户端查看时,也会随之自动与服务端一样创建,修改或删除文件
本文出自 “silence” 博客,请务必保留此出处http://silencezone.blog.51cto.com/3613477/1872445
以上是关于rsync+inotify实现实时同步的主要内容,如果未能解决你的问题,请参考以下文章