Rsync
也可以rsync -ap --delete root@192.168.1.24:/data/www/webapps/ /data/www/webapps/
输密码就能同步
比scp更强大的同步工具
安装rsync(本地默认有的)
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no 是否允许切换到root目录
max connections = 30 最大连接数
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3 类似debug,info,warning
timeout = 300
[www]
read only = yes
path = /usr/local/webapps 要共享的目录
comment = www 描述
auth users =test
secrets file = /etc/rsync.pas 密码文件
hosts allow = 192.168.0.11,192.168.0.12 允许哪个主机访问
[web]
read only = yes
path = /data/www/web
comment = web
auth users =test 客户端通过这个用户来访问
secrets file = /etc/rsync.pas
hosts allow = 192.168.1.11,192.168.0.0/24
rsync --demon 启动服务
ps -ef |grep rsync
netstat -tln 看873端口
vim /etc/rsync.pas
密码格式test:123456
chmod 700 /etc/rsync.pas
然后去客户端只需要设置同步密钥
vi /etc/rsync.pas
username:userpasswd
test:123456
chmod 600 /etc/rsync.pas
客户端执行
Rsync -aP --delete test@192.168.1.24::www /tmp --password-file=/etc/rsync.pas
receiving file 表示从客户端接受文件
-delete完全一致 -a表示递归,并保持原文件所有文件属性
可以写成脚本
#!/bin/bash
#client rsync
#by yinxingyouyou 2017年5月10日 11:27:57
KEY_FILE="--pasword-file=/etc/rsync.pas"
SERVER="192.168.1.24"
if [ -z $1 -o -z $2 ];then
echo -e "\033[32m------------------\033[0m"
echo -e "\033[32mUssage:sh $0 module dest_dir,example sh $0 www /var/www/html\033[0m"
exit 0
fi
rsync -aP --delete test@$SERVER::$1 $2
Rsync实时同步
inotify实时检查修改
安装inotiy-tools
#!/bin/sh
src=/data/webapps/www 本地目录
des1=/home/webapps/ 客户端目录
ip=192.168.1.26 192.168.1.36客户端IP
src1=`echo $src |awk '{print $1}'`
src1=`echo $src |awk '{print $2}'`
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
for i in $ip
do
rsync -aP --delete $src1 root@$ip:$des
rsync -aP --delete $src2 root@$ip:$des
done
done
nohup 脚本 & 后台运行