yum install -y rsync
经过ssh将本地文件拷贝到另外一服务器(两台机器都须要装rsync)html
rsync -avz -e 'ssh -p 22' 1.html 192.168.71.101:/data
-a, ––archive 归档模式,表示以递归方式传输文件,并保持全部文件属性
-v, ––verbose 详细输出模式
-z, ––compress 在传输文件时进行压缩处理
-e, ––rsh=COMMAND 指定替代 rsh 的 shell 程序shell
准备两台机器bash
192.168.71.101 服务端
192.168.71.102 客户端 服务器
vi /etc/rsyncd.conf
配置以下ssh
uid = root gid = root use chroot = no max connections = 200 # pid file = /var/run/rsyncd.pid exclude = lost+found/ transfer logging = yes timeout = 900 # ignore nonreadable = yes dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 lock file = /var/run/rsyncd.lock log file = /var/run/rsyncd.log [backtest] path = /backup/test ignore errors read only = no list = no auth users = abo secrets file = /etc/rsync.passwd
建立服务端测试目录测试
mkdir -p /backup/test
建立密码文件ui
echo 'abo:123456' > /etc/rsync.passwd #必须为600,要不会报错 chmod 600 /etc/rsync.passwd
启动rsyncspa
systemctl start rsyncd
echo '123456' > /etc/rsync.passwd chmod 600 /etc/rsync.passwd
建立测试目录与文件code
mkdir /backup echo '111' > /backup/1.txt
测试将客户端文件推送到服务端(在客户端操做)orm
rsync -avz /backup/ abo@192.168.71.101::backtest --password-file=/etc/rsync.passwd --port=873
测试将服务端文件拉取到客户端(在客户端操做)
rsync -avz abo@192.168.71.101::backtest /backup/ --password-file=/etc/rsync.passwd
在客户端安装inotify
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install inotify-tools -y
新建脚本文件
vi /etc/rc.d/inotify.sh
内容以下
src=/backup/ #监听的目录 des=backtest #服务端的rsync模块名称 ip=192.168.71.101 #服务端的ip地址 /usr/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/bin/rsync -vzrutopg --progress $src abo@$ip::$des --password-file=/etc/rsync.passwd echo "$src has been resynced" done
添加执行权限并运行
chmod +x /etc/rc.d/inotify.sh nohup sh /etc/rc.d/inotify.sh>/data/inotify.log 2>&1 &
测试同步,在客户端/backup/目录下新加文件,能够看到服务端会实时同步过来