码迷,mamicode.com
首页 > 其他好文 > 详细

rsync远程同步

时间:2016-10-14 00:46:27      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:杨文   rsync+inotify实时同步   触发式脚本   

防伪码:既然目标是地平线,留给世界的只能是背影

                                                          第十三章  rsync远程同步

前言:本章主要讲解实现快速、安全、高效的异地备份,编写触发式同步脚本,实现数据同步。

一、理论部分实验

1、 配置rsync源服务器A(同步源提供数据的原始位置,发起端读取同步源的数据)

技术分享

1)建立/etc/rsyncd.conf配置文件

Vi  /etc/rsyncd.conf

技术分享

注意:如果采用匿名同步的方式,只要将其中的auth users和secrets file配置记录去掉就可以了。

2) 为备份账户创建数据文件

Vi /etc/rsyncd_users.db

技术分享

3)启动rsync服务程序

技术分享

如果要结束rsync进程,可以执行kill $(cat /var/run/rsyncd.pid)

2、 使用rsync备份工具(在rsync客户机,发起端,服务器B)

1) 例:将文件/etc/fstab、目录/boot/grub同步备份到/opt目录下(相当于本地备份)

 

技术分享


2) 例:将rsync同步源上的网站根目录下载到本地的/root下进行备份(远程备份)

首先要配置防火墙:

技术分享

然后确认rsync同步源上的网站根目录:

技术分享

最后在rsync客户机上执行备份

技术分享

查看/root下有没有网页

技术分享

3) 例:将源服务器中的wwwroot共享模块(网站根目录),下载到本地的/myweb目录下,(删除目标位置有而原始位置没有的文件)

首先确认在客户机上的/myweb下只有一个网页(123.html)

技术分享

然后执行备份

技术分享

注:-a表示递归模式,保留文件的权限、属性等信息

-v表示显示同步过程的详细信息

-z表示在传输文件时进行压缩

-H表示保留硬连接文件

--delete表示删除目标位置有而原始位置没有的文件(更安全)

查看在客户机的/myweb(里面只有同步源服务器上的网页,本地的123.html备份删除,因为加了--delete的备份选项)

技术分享

4) 例:每天晚上22:30对服务器的网站做一次同步

首先创建一个密码文件,保存backuper的密码

里面内容为pwd123:

技术分享

然后设置权限,并做计划任务:

技术分享

编辑任务计划(crontab  -e)

技术分享

删除客户机的/myweb下的所有数据

技术分享

当前时间为23:23,我把计划任务设置为23:24

时间到了之后查看:

技术分享

3、 配置rsync+inotify实时同步

作用:将rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作。

1) 调整inotify内核参数(文件数量较多或者变化较频繁时需要调整,把数值加大)

Vi /etc/sysctl.conf

技术分享

执行sysctl  -p更新

技术分享

2) 安装inotify-tools(软件到ftp或本机上找)

先执行configure,然后执行make && make install

技术分享

技术分享

3)以监控网站目录/var/www/html为例(当/var/www/html进行增删改查的时候就会动态显示监控信息)

技术分享

注:-m表示持续监控

-r表示递归整个目录

-q表示简化输出信息

-e表是用来指定要监控哪些事件

二、 综合实验(编写触发式同步脚本)

实验目标:检测本机/var/www/html目录,一旦有更新就触发rsync的同步操作,上传备份至服务器192.168.1.7的/var/www/html目录下,实现网站同步,保持两个站点的文件一致。类似于dns的主从复制。

 

首先在同步源上进行操作:(配置ssh源分为四步)

1)创建用户rput

  useradd rput && passwd rput

2)开启sshd服务

   service  sshd start

3) 允许rput用户登录

 Vi /etc/ssh/sshd_config

AllowUsers rput@192.168.1.8

技术分享

4) 启用密钥对验证

Vi  /etc/ssh/sshd_config

技术分享

配置发起端:(实现实时同步需要使用秘钥对的方式验证身份)

1)建立秘钥对文件实现无交互式登录

客户机(发起端)创秘钥对(公钥、私钥)

技术分享

上传公钥文件

技术分享

导入公钥信息到数据库文件

技术分享

使用秘钥对验证

技术分享

2)在发起端安装inofity工具

安装inotify-tools(同上,安装包在附件中)

技术分享

3) 编写触发式同步脚本

Vi /opt/inotify_rsync.sh

技术分享

4) 执行脚本

设置权限:Chmod  +x  /opt/inotify_rsync.sh

设置开机自动启动:Echo  ‘/opt/inotify_rsync.sh’  >> /etc/rc.local

执行脚本sh /opt/inotify_rsync.sh

5) 清空客户端/var/www/html中的网页(方便测试)

技术分享

6) 在/var/www/html中添加网页yangwen.html

技术分享

7) 在服务器192.168.1.7上查看/var/www/html中有没有a.html (如果有代表同步正常)

技术分享

注:若实验不通,则给同步源192.168.1.7中的/var/www/html修改属性

例如:

技术分享

谢谢观看,真心的希望能帮到您!

本文出自 “一盏烛光” 博客,谢绝转载!

rsync远程同步

标签:杨文   rsync+inotify实时同步   触发式脚本   

原文地址:http://yw666.blog.51cto.com/11977292/1861593

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!