最近一直在看高性能Linux服务器这本书,要趁学会了这个热乎劲写个博文整理一下。

rsync是Linux系统下的文件同步和数据传输工具,但是单独用rsync做文件同步有个缺点就是不能实现实时同步,这里就要用到inotify了,他是Linux2.6.13版本起开始支持的强大的、细粒度的、异步的文件系统时间监控机制。

开始正题,安装rsync,基本就是./configure ,然后 make && make install,inotify-tools的安装也是类似,这里就不赘述了。

这里的环境是cent os 6.2(10.0.0.16作为服务器端),centos6.0(10.0.0.7作为客户端)

下面是客户端/etc/rsyncd.conf的配置内容 

  1. uid = nobody 
  2.  
  3. gid = nobody 
  4.  
  5. use chroot = no 
  6.  
  7. max connections = 10 
  8.  
  9. strict modes = yes 
  10.  
  11. pid file = /var/run/rsyncd.pid 
  12.  
  13. lock file = /var/run/rsyncd.lock 
  14.  
  15. log file = /var/run/rsyncd.log 
  16.  
  17. [web] 
  18.  
  19. path = /opt/web/ 
  20.  
  21. comment = nagios document 
  22.  
  23. ignore errors 
  24.  
  25. read only = no 
  26.  
  27.  write only = no 
  28.  
  29. hosts allow = 10.0.0.16 
  30.  
  31. hosts deny = * 
  32.  
  33. list = false 
  34.  
  35. uid = root 
  36.  
  37. gid = root 
  38.  
  39. auth users = shanker 
  40.  
  41. secrets file = /etc/web.pass 
然后创建/etc/web.pass
内容是用户名和密码
[root@shanker web]# cat /etc/web.pass
shanker:hacker
由于strict modes = yes,所以要chmod 600 /etc/web.pass 来严格控制权限,否则会有警告
启动rsync守护进程/usr/bin/rsync --daemon
__________________________________________________________________________
下面是服务器端的配置
[root@baidu opt]# cat sync.sh
 
  1. #!/bin/bash 
  2. host=10.0.0.7 
  3. src=/opt/web/ 
  4. dst=web 
  5. user=shanker 
  6. /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f%e' \ 
  7.  -e modify,delete,create,attrib \ 
  8. $src \ 
  9. | while read files 
  10.         do 
  11.         /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user@$host::$dst 
  12.         echo "${files} was rsynced" >>/tmp/rsync.log 2>&1 
  13.         done 
  14.   
 
创建/etc/server.pass
[root@baidu opt]# cat /etc/server.pass
hacker
 
然后chmod 755 sync.sh
将sync.sh 放到/opt目录下,sh sync.sh &
最后将脚本放到系统自启动
echo "/opt/sync.sh & " >> /etc/rc.local
然后上一张测试的照片