多学一点(十四)——服务器间通过rsync和inotify-tools动态同步数据

Linux 下的 rsync 命令非常强大,多用来同步不同服务器上的数据同步。以前我们通常使用 crond 来实现,但 crond 很难做到实时同步。下面介绍一种方法,通过在脚本中结合使用 inotify 及 rsync实现数据实时同步。

1.安装 rsync

[[email protected] ~]# yum install -y openssh-clients rsync

这里要注意两点,一是进行同步的两台服务器上均需安装 rsync ,二是 rsync 需要依赖 openssh-clients 。

rsync 的常用参数在之前已经介绍过,这里我们简单的使用其-azP --delete 参数即可。

2.安装 inotify

[[email protected] ~]# yum install -y inotify-tools

这里需要注意的一点是 inotify-tools 在默认 yum 源中不存在,需要提前安装 epel 源:

[[email protected] ~]# yum install -y epel-release

安装完成后就可以使用其监控命令 inotifywait ,该命令常用参数如下:

-m 持续监控,如果不使用该参数会在监控到第一次操作后退出

-r 与 rm 等命令中的 -r 参数相同,针对目录下的文件 recursive 监控

-q 安静模式,不会输出建立监控的信息,如果使用两次则只会在监控出现异常时输出信息,通常使用一次 -q 参数

-e 指定监控目录的操作行为,这些行为有access modify attrib close_write close_nowrite close openmoved_to moved_from move move_self create delete delete_self unmount 。如果不指定,则针对所有行为

3. 配置服务器间无密码登录:

[[email protected] ~]# ssh-keygen

其中第一次提示输入要存放私钥的文件位置及文件名,默认为 /root/.ssh/id_rsa ;第二次提示输入密钥所使用的密码,第三次提示再次输入该密码以确认。这里我们使用默认值,并且不输入密码。命令运行结束后,在 /root/.ssh/ 目录下多出了两个文件 id_rsa 和 id_rsa.pub ,其中前者为私钥,后者为公钥。复制公钥中的内容,在需要无密码登录的另一台服务器上做如下操作(为了区分,该服务器主机名我们定义为remotehost):

[[email protected] ~]# mkdir .ssh
[[email protected] ~]# chmod 700 !$
[[email protected] ~]# cd !$
[[email protected] ~]# touch authorized_keys
[[email protected] ~]# vim ~$

粘贴刚刚复制的公钥内容,保存退出。

[[email protected] ~]# chmod 600 !$

之后回到我们的localhost 服务器,尝试 ssh 登录remotehost :

[[email protected] ~]# ssh [email protected]
[[email protected] ~]#

无需密码已经登录成功,这样我们在使用 rsync 从 localhost 向 remotehost 同步数据时也可以免除密码了,这也是在脚本中执行rsync 的前提条件。

4. 编写脚本:

[[email protected] ~]# vim dynamicrsync.sh
#!/bin/bash
inotify -mrq -ecreate,move,delete,modify /data/www/html | while vara varb varc
do rsync -azP--delete /var/www/html [email protected]:/data/web_bak
done

保存退出,改变权限:

[[email protected] ~]# chmod +x !$

运行脚本:

[[email protected] ~]# ./dynamicrsync.sh

之后就可以实现两台服务器上的动态 rsync 了。

注:

该脚本可以优化,当数据更新频繁时,应避免并发执行 rsync ,之后在知道具体优化方法后再来补充这一部分。数据量不大或数据更新不太频繁时,使用上述脚本已足够。

时间: 2024-12-14 18:50:22

多学一点(十四)——服务器间通过rsync和inotify-tools动态同步数据的相关文章

菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理

之前写了一篇关于IOC的博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP. IOC负责将对象动态的注入到容器,从而达到一种需要谁就注入谁,什么时候需要就什么时候注入的效果,可谓是招之则来,挥之则去.想想都觉得爽,如果现实生活中也有这本事那就爽歪歪了,至于有多爽,各位自己脑补吧:而AOP呢,它实现的就是容器的另一大好处了,就是可以让容器中的对象都享有容器中的公共服务.那么容器是怎么做到的呢?它怎么就能让在它里面的对象自动拥有它

rsync结合inotify实现实时同步

背景介绍 中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步 实验说明 操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上 源服务器:172.16.10.10/24 目标服务器:172.16.10.20/24 实验目的:将源服务器上的/rsync目

rsync unison+inotify双向实时同步

rsync多线程同步 A:文件服务器 ip:10.10.1.10 B:备份服务器 ip:10.10.1.11 1.在B服务器上安装rsync软件 tar xzvf rsync-3.1.0.tar.gz cd rsync-3.1.0 ./configure make make install 2.配置双机ssh信任 在两台服务器的root目录下创建.ssh目录并设置正确的权限 mkdir ~/.ssh chmod 700 ~/.ssh 使用ssh-keygen命令生成SSH协议的RSA密钥 ssh

rsync简介与rsync+inotify配置实时同步数据

rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync支持很多特性: 可以镜像保存整个目录树和文件系统 可以很容易做到保持原来文件的权限.时间.软硬链接等等 无须特殊权限即可安装 快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件.rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽 安全:可以使用scp.

Rsync+inotify 实现实时同步数据文件

什么是Rsync? rsync可以实现增量备份,配合inotify可以实现时事的数据备份 Rsync的三种工作模式 1)本地备份,相当于 cp 命令 将 /etc/hosts 文件拷贝到 /tmp/ 目录下 rsync -avz /etc/hosts /tmp/ 删除一个目录 先新建一个空目录,然后使用 rsync 命令同步 mkdir /zhao 添加 --delete参数,目录 zhao 为空 rsync --delete /zhao/ /tmp/ 命令解释:以前面的目录为准,前面目录有啥后

How tomcat works 读书笔记十四 服务器组件和服务组件

之前的项目还是有些问题的,例如 1 只能有一个连接器,只能处理http请求,无法添加另外一个连接器用来处理https. 2 对容器的关闭只能是粗暴的关闭Bootstrap. 服务器组件 org.apache.catalina.Server接口的实例用来表示Catalina的整个servlet引擎. 我们使用Server就是因为,它用一种优雅的方式来启动/关闭整个系统. 下面是启动和停止机制是如何工作的.当服务器启动的时候,它启动它内部的所有组件.然后无限期的等待关闭命令,如果你想要关闭系统,发送

SQL数据同步到ELK(四)- 利用SQL SERVER Track Data相关功能同步数据(上)

一.相关文档 老规矩,为了避免我的解释误导大家,请大家务必通过官网了解一波SQL SERVER的相关功能. 文档地址: 整体介绍文档:https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/about-change-tracking-sql-server?view=sql-server-2017 Change Data Capture:https://docs.microsoft.com/en-us/sql/

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp,wget,curl. rcp rcp不是一种安全的的传输文件的方式,rcp通过rsh(rsh见下面)来执行远程命令,要使用rcp必须经过一些配置,现在rcp已经被scp取代了,常用scp来进行文件传输.要使用rcp,需要具备以下条件: (1)如果系统中有/etc/hosts 文件,应确保该文件包含要