暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何用Rysnc实现数据同步?

吴柯的运维笔记 2017-08-15
760

每个理性的IT人士都关注了吴柯的运维笔记!


Rsync(remote sync)

是UNIX及类UNIX平台一款数据镜像备份软件,它不像FTP等其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。

• 文件同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据


rsync同步操作

命令用法
– rsync [选项...] 源目录 目标目录


• rsync操作选项
-n:测试同步过程,不做实际修改
--delete:删除目标文件夹内多余的文档
-a:归档模式,相当于-rlptgoD
-v:显示详细操作信息
-z:传输过程中启用压缩/解压


[root@svr7 ~]# yum  -y  install  rsync

[root@svr7 ~]# mkdir /dir1
[root@svr7 ~]# mkdir /test1

[root@svr7 ~]# cp  -r /boot/*   /dir1
[root@svr7 ~]# rsync -avz --delete /dir1/   /test1/

[root@svr7 ~]# cp /etc/passwd  /dir1
[root@svr7 ~]# rsync -avz --delete /dir1/   /test1/

[root@svr7 ~]# cp /etc/shadow /test1
[root@svr7 ~]# rsync -avz --delete /dir1/   /test1/

rsync+SSH远程同步
用法及服务端要求
• 列出 SSH 服务端资源
– rsync user@host :远程 目录/

• 与远程的 SSH目录保持同步
– 下行:rsync [...] user@host:远程目录    本地目录
– 上行:rsync [...] 本地目录      user@host:远程目录

虚拟机A:
# rsync -avz --delete /opt/   root@192.168.5.5:/opt/
 
# cp /etc/fstab  /opt/test01.txt
# rsync -avz --delete /opt/   root@192.168.5.15:/opt/

虚拟机B:
# ls /opt

Rsync+Inotify自动同步(实时同步)

由于使用Rsync仅能满足对数据实时性不高的环境,为了实现多台主机之间的实时同步,就需要结合Inotify(inode notify)工具。


栗子:实现镜像Web(使web服务器所提供的网站数据保持一致)


1.虚拟机A:搭建Web服务器,并在/var/www/html/写入index.html
虚拟机B:搭建Web服务器,并在/var/www/html/写入index.html

2.实时同步:虚拟机A的/var/www/html/与虚拟机B的/var/www/html/

方案:

1.实现源码包安装,在真机上,上传inotify-tools-3.13.tar.gz
# scp /var/ftp/share/inotify-tools-3.13.tar.gz root@192.168.5.5:/root/


2.安装gcc、make
[root@svr7 ~]# yum -y install gcc  make
[root@svr7 ~]# rpm -q gcc
[root@svr7 ~]# rpm -q make

3:tar解包,释放源代码至指定目录
# tar -xf /root/inotify-tools-3.13.tar.gz -C /opt
# ls /opt/

4: ./configure 配置
指定安装目录/功能模块等选项,检测系统是否安装gcc
[root@svr7 ~]# cd /opt/inotify-tools-3.13
[root@svr7 inotify-tools-3.13]# ./configure

5: make 编译,生成可执行的二进制程序文件


6: make install 安装,将编译好的文件复制到安装目录
[root@svr7 /]# umount /var/www/html/rhel7/
[root@svr7 /]# ls /var/www/html/rhel7/


Inotifywait

基本用法
– inotifywait [选项] 目标文件夹
• 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、
attrib 等事件类别


while  [条件测试]
do
     执行命令
done


----<利用while循环反复检查单次监控结果>

7.在虚拟机A上生成公私钥
[root@svr7 /]# ssh-keygen
[root@svr7 /]# ssh-copy-id root@192.168.5.15

8.书写同步脚本
[root@svr7 /]# vim /opt/rsync.sh
#!/bin/bash
while inotifywait -rqq /var/www/html/
do
rsync -az --delete  /var/www/html/ root@192.168.5.15:/var/www/html
done

[root@svr7 /]# chmod +x /opt/rsync.sh
[root@svr7 /]# /opt/rsync.sh


这样便实现了客户主机将数据推送到Rsync服务器,实现数据的实时同步功能。这样修改了192.168.5.5主机上的数据,就可以将数据推送至web服务器,192.168.5.15主机的数据会相应的发生改变。



推荐阅读:

【基础必备】RAID阵列分类和进程管理常用指令

容易忘的Linux基础小工具(附vim编辑技巧)

<简述>Linux配置web服务器

Linux系统磁盘分区及创建逻辑分区与扩展入门教程

【技术帖】LDAP网络用户的实现

Linux文件权限的更改:理解第一,命令次之

【Linux环境下】绝对要掌握的创建/查看指令

【Linux】不得不了解的软件包管理与安装指令


吴柯的运维笔记

BY WUKEYY18S

长按二维码关注我们吧



文章转载自吴柯的运维笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论