Chinaunix首页 | 论坛 | 博客
  • 博客访问: 312696
  • 博文数量: 32
  • 博客积分: 215
  • 博客等级: 入伍新兵
  • 技术积分: 936
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 11:21
个人简介

一个靠社会发展推动我不懈努力的人!

文章分类

全部博文(32)

文章存档

2017年(3)

2016年(4)

2015年(8)

2013年(10)

2012年(7)

分类: LINUX

2015-12-02 18:10:41


点击(此处)折叠或打开

  1. 点击(此处)折叠或打开
  2. 两台主机
  3. A Server端
  4. B client端(备份端:将A端文件备份到本机)
  5. A端:
  6. 一、安装rsync 和 inotify
  7. wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
  8. wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
  9. tar -zxvf rsync-3.1.1.tar.gz
  10. ./configure --prefix=/usr/local/rsync
  11. make && make install
  12. tar -zxvf inotify-tools-3.14.tar.gz
  13. ./configure --prefix=/usr/local/inotify
  14. make && make install
  15. 二、建立密码认证文件 #其中xxx315可以自己设置密码,rsync.passwd名字也可以自己定义
  16. cd /usr/local/rsync/
  17. echo "xxx315" >/usr/local/rsync/rsync.passwd
  18. chmod 600 rsync.passwd #无论是为了安全,还是为了避免出现以下错误,密码文件都需要给600权限
  19. 三、创建rsync复制脚本 ###此项功能主要是将server端的目录/data4/mysql_backup里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给client(B端)的某个目录里,下面是通过shell脚本实现的###
  20. ###其中host是client(B端)的ip,src是server(A端)要实时监控的目录,des是认证的模块名,需要与client一致,user是建立密码文件里的认证用户###
  21. #!/bin/bash
  22. host=172.16.7.4
  23. src=/data4/mysql_backup
  24. des=web
  25. user=xxx315
  26. /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
  27. | while read files
  28. do
  29. /usr/local/rsync/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des >>/dev/null 2>&1
  30. echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
  31. done
  32. chmod 764 rsync.sh
  33. 请记住,只有在备份服务器client端的rsync安装并启动rsync之后,在启动rsync.sh脚本,否则有时候会出问题
  34. sh /tmp/rsync.sh &
  35. echo "/tmp/rsync.sh" >> /etc/rc.local #加入到启动项
  36. B端:(备份服务器)
  37. 一、安装rsync
  38. wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
  39. tar -zxvf rsync-3.1.1.tar.gz
  40. ./configure --prefix=/usr/local/rsync
  41. make && make install
  42. 二、建立密码认证文件 #请记住,在server端建立的密码文件,只有密码,没有用户名;而在备份服务端client里建立的密码文件,用户名与密码都有。
  43. echo "xxx315:xxx315" > /usr/local/rsync/rsync.passwd
  44. chmod 600 rsync.passwd
  45. 三、建立rsync配置文件
  46. cd /usr/local/rsync/
  47. vim rsync.conf 输入如下内容:
  48. uid = root
  49. gid = root
  50. use chroot = no
  51. max connections = 10
  52. strict modes = yes
  53. pid file = /var/run/rsyncd.pid
  54. lock file = /var/run/rsync.lock
  55. log file = /var/log/rsyncd.log
  56. [web]
  57. path = /diskd/mysql_bakup #备份到本机的目录
  58. comment = web file
  59. ignore errors
  60. read only = no
  61. write only = no
  62. hosts allow = 172.16.6.22 #A端
  63. hosts deny = *
  64. list = false
  65. uid = root
  66. gid = root
  67. auth users = xxx315
  68. secrets file = /usr/local/rsync/rsync.passwd
  69. 四、启动
  70. /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf
  71. 完成了,不过记得要去A端把脚本启动起来
  72. sh rsync.sh &
  73. 可以去试试在A端目录下建个文件或者目录试试B端是否同步。
  74. 也可以试试删除,如果A端执行了删除操作,B端没删除,需要在inotify.sh中do后面的 rsync命令参数中添加 --delete参数就可以了


阅读(1377) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~