1.虚拟机:192.168.20.140 server端
192.168.20.137 client端
2.下载安装rsync
下载:tar -zxvf rsync-3.1.1.tar.gz
cd rsync-3.1.1
./configure --prefix=/usr/local/rsync
make && make install
3.配置rsync的主配置文件。
vim /etc/rsyncd.conf (这里要注意,是rsyncd.conf,不是rsync.conf,不然会读取不到)
uid = root #/运行rsync守护进程的用户名
gid = root
use chroot = no #/不使用chroot
max connections = 0 #/不限制最大数
log file=/var/log/rsyncd.log #日志记录文件的存放位置
pid file=/var/run/rsyncd.pid #pid文件的存放位置
lock file=/var/run/rsyncd.lock #锁文件的存放位置
[21dir] #/认证模块,client端是要认证的,要统一
path = /home/rsync/ #/同步路径
comment = rsync from 192.168.20.140 #/rsync 服务来自server端
read only = no
list = no
auth users = rsyncuser #/认证用户名
secrets file = /etc/21.pas #/用户密码认证
3.server端的密码表
vim /etc/21.pas
rsyncuser:123456
设置权限防止非root的修改密码
chmod 600 /etc/21.pas
4.启动rsync服务
/usr/local/rsync/bin/rsync --port=873 --address=192.168.20.140 --daemon
netstat -tlunp 查看rsync的873端口是否开启
5.client端
vim /etc/21.pas
123456 #/这里只需要密码就可以,能跟server端匹对上
chmod 600 /etc/21.pas
6.测试是否同步(用客户端测试)
/usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas /home/rsync/ rsyncuser@192.168.20.140::21dir
7.Server端下载安装inotify服务
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.13
./configure --prefix=/usr/local/inotify
make
make install
8.监控脚本
#!/bin/bash
#function:rsync 192.168.20.140 to 192.168.20.137
#
if [ ! -f /etc/21.pas ]
then
echo "123456" > /etc/21.pas
chmod 600 /etc/21.pas
fi
log=/usr/local/inotify/logs/rsync.log
path="/home/rsync"
host="192.168.20.137"
module="21dir"
/usr/local/inotify/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write
,modify,delete,create,attrib $path | while read DATE TIME DIR FILE; do
FILECHANGE=${DIR}${FILE}
/usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas $path --exclude-from="/usr/local/inotify/logs/rules.txt" rsyncuser@$host::$module && echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> $log
done
exit 0
9.添加脚本权限
chmod +x inotify.sh
10.执行脚本
sh inotify.sh
11.详解命令
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
/usr/bin/rsync -avH --delete --progress --password-file
-a 存档模式
-H 保存硬连接
-delete 删除于多余文件
--password-file 密码文件
12.同步文件
/usr/bin/rsync -vzrtopg --progress rsyncuser@192.168.20.140::21dir/(可以在填单一的文件名) /home/rsync/ (同步到client端的路径)
13.删除文件
/usr/bin/rsync -avH --delete --progress --password-file=/etc/21.pas /home/rsync/ rsyncuser@192.168.20.140::21dir(通过client端删除server端/home/rsync的文件中不一样的文件)