分享rsync+inotify实时同步实例教程

1.rsync

与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份的优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

随着应用系统规模不断的扩大,对数据安全性和可靠性也提出了更高的要求,rsync在高端业务中也逐渐暴露出许多不足。首先,rsync实时同步时,需要扫描所有的文件进行比对,进行差量传输。如果文件数量打到了百万甚至千万量级,扫描所有的文件是非常耗时的,而且正在发生变化的往往是其中很少一部分,这是非常低效的方式。其次,rsync不能实时监测、同步数据。虽然它可以通过linux守护进程的方式进行出发同步,但是两次出发动作一定会有时间差,这样就导致了服务端和客户端出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify就出现了!

2.inotify(监控)

 

inotify是一种强大的、细粒度的、异步的文件系统事件监控机制。通过inotify可以监控文件系统中的添加、删除、修改、移动等各种细微事件,利用这个内核借口,第三方软件就可以监控文件系统下的各种情况变化,而inotify-tools就是这样的一个第三方软件。

 

一、服务端配置(只需要安装rsync)

 

共享到/tmp/下:

 

1.添加虚拟用户useradd rsync -s /sbin/nologin

 

  chown -R rsync.rsync /tmp/

 

2.配置rsyncd.conf配置文件

 

vim rsyncd.conf

 

#rsync_config_______________start

 

#rsyncd.conf start##

 

uid = rsync(用户)

 

gid = rsync(用户)

 

use chroot = no(防止出现安全问题)

 

max connections = 200(有多少个客户端可以连接我这个备份服务器)

 

timeout = 300(超时,多长时间没有动作就断掉连接)

 

pid file = /var/run/rsyncd.pid(进程号,将进程号放在这个文件里)

 

lock file = /var/run/rsync.lock(相当于“锁”的概念,上厕所锁门的概念)

 

log file = /var/log/rsyncd.log(出错了,可以查看log日志文件)

 

[tmp](模块)

 

path = /tmp/(路径)

 

ignore errors(忽略错误)

 

read only = false(只读为假,可读,可写的意思)

 

list = false(不允许列表)

 

hosts allow = 10.0.0.0/24(允许的主机)

 

hosts deny = 0.0.0.0/32(拒绝的主机)

 

auth users = rsync_backup(支持虚拟用户)

 

secrets file = /etc/rsync.password(用户对应的密码文件)

 

#rsync_config_______________end

 

3.建立密码文件

 

 echo “rsync_backup:123456” >/etc/rsync.password

 

凡是密码文件全部600权限 chmod 600 /etc/rsync.password

 

4.rsync –daemon daemon模式启动

 

5.将rsync –daemon加入/etc/rc.local

 

  echo “/usr/bin/rsync –daemom” >>/etc/rc.local

 

 

 

二、客户端配置

 

安装rsync和inotify

 

1.安装rsync(yum安装即可)

 

2.建立密码认证文件

 

echo “123456” >/etc/rsync.password 只需要密码

 

设置权限600 chmod 600 /etc/rsync.password

 

3.安装inotify:

 

  cd /home/cai/tools/

 

wget

 

 

 

   54  tar xf inotify-tools-3.14.tar.gz

 

   55  ls

 

   56  cd inotify-tools-3.14

 

   57  ./configure –prefix=/usr/local/inotify-tools-3.14

 

   58  make && make install

 

   59  yum install -y gcc

 

   60  ./configure –prefix=/usr/local/inotify-tools-3.14

 

   61  make && make install

 

   62  cd /usr/local/inotify-tools-3.14/

 

   63  ls

 

   64  ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify

 

 

 

4.脚本都是放在/server/scripts下

 

 vim /server/scripts/rsync.sh

 

#!/bin/sh

 

host=192.168.76.129

 

src=/tmp/

 

des=tmp

 

user=rsync_backup

 

/usr/local/inotify/bin/inotifywait -mrq –timefmt ‘%d%m%y %H:%M’ –format ‘%T %w%f%e’ -e modify,delete,create,attrib $src | \

 

while read files

 

do

 

/usr/bin/rsync -avz –delete $src $user@$host::$des –password-file=/etc/rsync.password

 

echo “${files} was rsynced” >>/var/log/rsyncd.log 2>&1

 

done

 

exit o

 

~           

 

并给予764权限

 

测试脚本:sh -x /server/scripts/rsync.sh

 

运行脚本:sh /server/scripts/rsync.sh &

 

将rsync.sh脚本放入到开机启动项中:echo “/tmp/rsync.sh” >>/etc/rc.local

 

以上就是分享rsync+inotify实时同步实例教程的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3166128.html

(0)
上一篇 2025年3月31日 03:18:06
下一篇 2025年3月31日 03:18:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • java中同步与异步区别是什么

    一、同步与异步概念:(推荐:java视频教程) 1.同步:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关…

    2025年5月3日
    000
  • ADMX3652-便携六位半电压表

    adi最近悄悄发布了一个令人惊叹的便携式测量硬件——一个六位半的仪器,真是让人眼前一亮。可惜的是,它并没有开源,未来是否会开源还是个未知数。 六位半的精度表示测量值的第一位仅限于正负号和0/1,称为½位,而其他位数可以显示0到9,称为一位。…

    2025年4月30日 互联网
    000
  • vscode如何实现代码在浏览器打开并实时刷新

    在vscode扩展中搜索“view in browser”插件并点击安装,点击资源管理器选中当前文件右键选择“view in browser”即可在默认浏览器中打开页面 实时刷新方法:livereload 在项目目录下运行命令: brows…

    2025年4月2日 编程技术
    200
  • vscode怎么实现实时预览

    打开vscode,点击坐标工具栏的最后一个进入插件安装 如果没有显示左边的工具栏,也可以在View中找到Extensions进入插件安装 在搜索框中输入Live Server,在搜索结果中找到如下,选择安装 安装完成需要重启软件插件才能生效…

    2025年4月2日 编程技术
    200
  • vscode怎么同步配置

    第一步: 在 vscode 中,安装用于同步配置的插件 settings sync 第二步:将 VSCode 配置上传到 GitHub 完成这一步需要 GitHub token 和 GitHub gist 进入GitHub 设置界面 &am…

    2025年4月2日 编程技术
    100
  • 在JS中实现点击下拉菜单内容同步输入框

    下面我就为大家分享一篇js实现点击下拉菜单把选择的内容同步到input输入框内的实例,具有很好的参考价值,希望对大家有所帮助。 最近博主在边学flask边写测试平台,碰到一个比较常用的场景如下图所示 这里有一个输入框组,下拉菜单里面有3个选…

    2025年3月31日
    100
  • inotify+rsync实时同步的一个实例介绍

    背景   我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题。但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法都尝试过,问题根本没有解决。经过…

    编程技术 2025年3月31日
    100
  • linux下实现两台服务器实时同步方法介绍

    假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /opt/bak/test/ 实现的目的就是保持这两个服务器某个文件目录保持实时同步 实现方…

    编程技术 2025年3月30日
    100
  • PHP实时图表生成技术详解

    在今天的web应用开发中,实时的数据展示是非常重要的一部分,很多应用需要实时地可视化呈现数据。在如今的大数据时代,数据分析和可视化已经成为必不可少的工具。从日常生活中的股票行情、气象预报、网络流量监控到工业生产质量、人口普查、客户增长率等,…

    编程技术 2025年3月30日
    100
  • 如何通过Vue实现实时双向服务器端通信的刨析

    如何通过Vue实现实时双向服务器端通信的剖析 引言:现代Web应用程序中,实时双向服务器端通信变得越来越重要。它可以实现实时的数据更新、实时聊天和协同编辑等功能。Vue是一个流行的前端框架,它提供了一种简洁的方式来构建用户界面。本文将介绍如…

    2025年3月30日
    100

发表回复

登录后才能评论