源文件地址 ip1 路径:/test
目标文件地址 ip2 路径:/des
1、inotify检查和安装
该工具为文件实时监控工具,需要linux操作系统内核支持,内核支持需要至少版本为2.6.13
ip1机器下执行:
uname -r 查看版本
返回:
2.6.32-358.6.1.el6.x86_64
支持则执行:
执行:
ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches
执行:
yum install inotify-tools -y
获取inotify路径:
执行:which inotifywait
输出:/usr/bin/inotifywait
2、rsync 服务端程序安装
ip2机器执行:
cd /usr/local/src/
wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar zxvf rsync-3.1.2.tar.gz
cd rsync-3.1.2
mkdir /usr/local/rsync
./configure --prefix=/usr/local/rsync
make && make install
vim /etc/profile
加入export PATH=$PATH:/usr/local/srync/bin
source /etc/profile
ln -s /usr/local/rsync/bin/rsync /usr/bin/rsync
rsync --version
vim /etc/rsyncd.conf
文件如下:
uid = 0
gid = 0
port = 873
use chroot = on
max connections = 10
timeout = 120
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[bakup]
path = /des
comment = pic file
ignore errors
read only =no
list = false
hosts allow = ip1
auth users = root
secrets file = /etc/rsyncd.password
vim /etc/rsyncd.password
文件如下:
root:qwe123
密码文件权限必须是600
chmod 600 /etc/rsyncd.password
启动脚本,且开机启动
vim /etc/init.d/rsyn_cro.sh
脚本如下:
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
改变权限:
chmod -R 777 /etc/init.d/rsyn_cro.sh
3、文件更新监听和推送文件
安装客户端
ip1机器执行:
cd /usr/local/src/
wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar zxvf rsync-3.1.2.tar.gz
cd rsync-3.1.2
mkdir /usr/local/rsync
./configure --prefix=/usr/local/rsync
make && make install
vim /etc/profile
加入export PATH=$PATH:/usr/local/srync/bin
source /etc/profile
ln -s /usr/local/rsync/bin/rsync /usr/bin/rsync
rsync --version
新增密码文件:
vim /usr/local/notify_rsync/rsync.pwd
文本如下
qwe123
密码文件必须是600权限
chmod -R 600 /usr/local/notify_rsync/rsync.pwd
监控脚本:
vim /usr/local/notify_rsync/notify.sh
文件如下:
#!/bin/bash
src=/test/
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file
do
/usr/bin/rsync --password-file=/usr/local/notify_rsync/rsync.pwd -arzuq $src root@{ip2}::bakup/
echo " ${file} was rsynced" >>/usr/local/notify_rsync/log/rsync.log 2>&1
done
改变执行权限
chmod -R 777 /usr/local/notify_rsync/notify.sh
开机启动:
vim /etc/init.d/notify_cron.sh
文件如下:
nohup /usr/local/notify_rsync/notify.sh > /usr/local/notify_rsync/nohup.out &
改变执行权限
chmod -R 777 /etc/init.d/notify_cron.sh
至此实时同步文件完成,当ip1 路径/test下有文件变化将会把文件推送至ip2