今天要做两台服务器,作为cdn的源头,两台服务器内容文件要同步.
一台主Master:192.168.1.230
一台备份slave:192.168.1.236
操作系统为centos 5.6 x86_64 .默认安装了rsync
1. 我们只需要在Master上安inotify-tools这个工具
解压,按照INSTALL说明安装好.
2. 在Master上生成key免密码 ssh-keygen -t rsa 生成一对密钥~/.ssh/
3. 把Master主机~/.ssh/id_rsa.pub 拷贝为slave主机的~/.ssh/authorized_keys
4. 特别注意在master和slave上都要把.ssh的目录权限改为700 ,里面的文件改为600.不然还是会失败的.其实把sshd_conf中的StrictModes yes 改为no这个这样就不用改权限也能成功(不建议).
5. ssh 192.168.1.236 无需密码测试成功后.在master上
- #/bin/bash
- srcdir=/home/web/ #需要被同步的目录
- ip="192.168.1.236" # 目标主机,多个ip可以空格分开
- dstdir="/home/web/" #文件被同步到的目录
- username="gamemanager" 用户名
- /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $srcdir \
- | while read files
- do
- for ip_addr in $ip
- do
- /usr/bin/rsync -vzrtopg --delete --progress $srcdir $username@$ip_addr:$dstdir # > /dev/null 2>&1
- echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
- done
- done
6.运行脚本,在目录中添加删除文件都可以看到输出内容的.