如何用Rysnc实现数据同步?

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】不得不了解的软件包管理与安装指令

原文发布于微信公众号 - 吴柯的运维笔记(wukeyy18s)

原文发表时间:2017-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native应用部署/热更新-CodePush最新集成总结(新)

React Native应用部署/热更新-CodePush最新集成总结(新) ---- 更新说明: 此次博文更新适配了最新版的CodePush v1.17....

7546
来自专栏Flutter入门到实战

Flutter从配置安装到填坑指南详解

在 Google I/O ’17 上,Google 向我们介绍了 Flutter —— 一款新的用于创建移动应用的开源库。

2.2K5
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(四):简易留言簿基础开发

努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

3905
来自专栏BestSDK

37个TOP实例命令,超过一半你肯定都没见过

1. Top 命令输出 首先,让我们了解一下输出。top命令会显示系统的很多信息。我们需要理解不同部分输出的意义:默认运行时,top命令会显示如下输出: ? 前...

3266
来自专栏BIT泽清

React Native应用部署/马甲包热更新-CodePush最新集成总结(2018年最新)

React Native支持大家用React Native技术开发APP,并打包生成一个APP。在动态更新方面React Native只是提供了动态更新的基础,...

3510
来自专栏hbbliyong

Ubuntu16.04安装后开发环境配置和常用软件安装

Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视...

4278
来自专栏.NET技术

elasticsearch同步mongodb--mongo connector的使用

mongodb-win32-x86_64-3.4.6-signed.msi  (如果已经安装可以忽略)

2612
来自专栏自动化测试实战

RF第二讲--Selenium2Library库的简单实用

4208
来自专栏逸鹏说道

Javascript缓存投毒学习与实战

0x00 起因 不久前@三好学生师傅买了一个wooyun wifi,然后聊到了缓存投毒: ? 然后看到wooyun wifi的这个说明: 默认情况下该功能附带缓...

4425
来自专栏云计算教程系列

如何使用Prometheus监控CentOS 7服务器

Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储...

7660

扫码关注云+社区

领取腾讯云代金券