首页 > 其他分享 >RSYNC服务、RSYNC与INOTIFY组合完成实时同步

RSYNC服务、RSYNC与INOTIFY组合完成实时同步

时间:2024-07-18 17:58:29浏览次数:14  
标签:f1 RSYNC INOTIFY app rsync 实时 studentweb folder root

目录

1、linux系统下数据同步服务RSYNC

2、数据同步过程

3、rsync与scp的区别 

4、RSYNC的使⽤

5、通过练习掌握rsync

RSYNC服务扩展

设置1分钟推送一次文件

为rsync服务添加密码

RSYNC集合INOTIFY⼯具实现代码实时同步


1、linux系统下数据同步服务RSYNC


sync同步::刷新⽂件系统缓存,强制将修改过的数据块写⼊磁盘,并且更新超级块。
async异步:将数据先放到缓冲区,再周期性(⼀般是30s)的去同步到磁盘。
rsync远程同步:==remote  synchronous==


2、数据同步过程


sync数据同步 => 保存⽂件(⽬标)=> 强制把缓存中的数据写⼊磁盘(⽴即保存),实时性要求⽐较⾼的场景

asyn数据异步 => 保存⽂件(⽬标)=> 将数据先放到缓冲区,再周期性(⼀般是30s)的去同步到磁盘,适合⼤批量数据同步的场景


3、rsync与scp的区别 


两者都可以实现远程同步,但是相对⽐⽽⾔,rsync能⼒更强
① ⽀持增量备份
② 数据同步时保持⽂件的原有属性


4、RSYNC的使⽤


基本语法
 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST   
OPTION选项说明                                                        
-v     详细模式输出 
-a    归档模式,递归的⽅式传输⽂件,并保持⽂件的属性,equals -rlptgoD
-r    递归拷⻉⽬录
-l     保留软链接
-p    保留原有权限
 -t    保留原有时间(修改)
-g    保留属组权限
-o    保留属主权限
 -D    等于--devices  --specials    表示⽀持b,c,s,p类型的⽂件
-R    保留相对路径
-H    保留硬链接
-A    保留ACL策略
-e    指定要执⾏的远程shell命令,ssh更改端⼝常⽤选项      
-E    保留可执⾏权限
 -X   保留扩展属性信息  a属

5、通过练习掌握rsync

[root@y ~]# mkdir folder
[root@y ~]# mkdir folder/f{1..3}
[root@y ~]# tree folder/
folder/
├── f1
├── f2
└── f3
[root@y ~]# mkdir folder/f1/file{0..4}
[root@y ~]# tree folder/
folder/
├── f1
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   └── file4
├── f2
└── f3
[root@y ~]# rsync -av ./folder/ /opt              将folder目录下的文件传到opt目录下      
如果folder后面不加/则会把folder目录一起传过去,效果与-avR效果相同
[root@y ~]# tree /opt
/opt
├── f1
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   └── file4
├── f2
└── f3
[root@y ~]# rsync -av folder/f1/ folder/f2/ 
[root@y ~]# tree folder/f2/
folder/f2/
├── file0
├── file1
├── file2
├── file3
└──  file4
[root@y ~]# mkdir folder/f1/file5
[root@y ~]# rsync -av folder/f1/ folder/f2/
folder/f2/
├── file0
├── file1
├── file2
├── file3
├── file4
└── file5
这里可以看到f1\f2同步了
[root@y ~]# rm -rf folder/f1/file0
[root@y ~]# rsync -av folder/f1/ folder/f2/
这里发现f1\f2并没有同步删除,将file0创建回来
[root@y ~]# touch folder/f1/file0
[root@y ~]# rsync -av --delete folder/f1/file0
[root@y ~]# rsync -av folder/f1/ folder/f2/
这里在同步一次就会发现已同步

在文件里写入东西
[root@y ~]# vim folder/f1/file0
[root@y ~]# cat folder/f1/file0
我是渣渣辉
[root@y ~]# rsync -av folder/f1/ folder/f2/
[root@y ~]# cat folder/f2/file0
我是渣渣辉
这里可以看到内容也可以被同步

修改文件的修改时间
[root@y ~]# touch folder/f1/file0 -m -d "2017-09-02 00:00:00"
[root@y ~]# ls -l folder/f1/
总用量 4
-rw-r--r--. 1 root root 16 9月   2 2017 file0
[root@y ~]# rsync -av folder/f1/ folder/f2/ 
[root@y ~]# ls -l folder/f2
总用量 4
-rw-r--r--. 1 root root 16 9月   2 2017 file0
这里可以看到属性也被同步了


打开另一台主机并下载rsync不然传送不了
[root@y ~]# rsync -av folder/ [email protected]:/opt/
这样就把文件传过去了
[root@localhost ~]# dd if=/dev/zero of=/tmp/laj bs=300M count=1
[root@y ~]# rsync -av  [email protected]:/tmp/laj /tmp
ks-script-5GmJIr                                                         vmware-root
laj                                                                      yum.log
systemd-private-9583028f07d74206ac525265fec45503-chronyd.service-4lY9q9
这样就可以看到4.10主机里的laj被同步过来了

[root@y ~]# systemctl start rsyncd
[root@y ~]# netstat -lntup |grep rsync

6、RSYNC服务扩展

[root@y ~]# find / -name "rsync*conf"          这里我们需要找到rsync文件的配置路径
/etc/rsyncd.conf
[root@y ~]# mkdir -p /app/studentweb/src/main/java/co/goho/yuanyu.studentweb
[root@y ~]# touch /app/studentweb/src/main/java/co/goho/yuanyu.studentweb/File{0..9}.java
[root@y~]# vim /etc/rsyncd.conf
[app]   
path=/app/studentweb/
log file=/war/log/rsync.log
[root@y studentweb]# systemctl restart rsyncd
现在在y主机中提供了一个针对app/下项目的rsyns服务,下次可以直接访问

换成4.10的主机,但不启动rsyncd服务
[root@localhost ~]# rsync -av [email protected]::
app
[root@localhost ~]# rsync -av [email protected]::app /tmp
这里可以看到备用机没启动rsync服务也可以下载

6.1设置1分钟推送一次文件

这里我们采取的方案就是利用计划任务去完成文件的推送
[root@y studentweb]# crontab -e
*/1 * * * * /usr/bin/rsync -av /app/studentweb [email protected]:/tmp/


6.2为rsync服务添加密码


[root@y studentweb]# vim /etc/rsyncd.conf     在/etc/rsyncd.conf上添加账号密码路径
[app]
path=/app/studentweb/
log file=/war/log/rsync.log
auth users=user0,user1
secrets file=/etc/rsync.secrets
[root@y studentweb]# vim /etc/rsync.secrets   在/etc/rsync.secrets中添加账号和密码
账户:密码                                        这里的账户不可以和本机里的账户相同(很重要)
xxx:xxx
修改权限
[root@y studentweb]# chmod 600 /etc/rsync.secrets                   重启rsyncd服务     
[root@y studentweb]# systemctl restart rsyncd
换成4.10的主机用xxx账户访问并同步                     
[root@localhost ~]# rsync -av [email protected]::app /tmp/

7、RSYNC集合INOTIFY⼯具实现代码实时同步


[root@y studentweb]# yum -y install inotify-tools
[root@y ~]# inotifywait -mr /app/                             监听app目录
在开一个窗口在app目录下写东西会发现监听的那有东西,说明监听成功

这里我们编写一个实时同步的脚步,减少不必要的麻烦

[root@y ~]# vim inotifytext.sh
#!/bin/bash
/usr/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/studentweb|while re
ad events
do
        rsync -av /app/studentweb/ [email protected]:/tmp/
done
[root@y ~]# chmod 700 inotifytext.sh 
新建窗口在/app/studentweb/创建文件 去4.10主机查看/tmp目录有东西说明同步成功
[root@y ~]# nohup ./inotifytext.sh  &
[root@y ~]# jobs
[root@y ~]# kill % +序号结束监控

标签:f1,RSYNC,INOTIFY,app,rsync,实时,studentweb,folder,root
From: https://blog.csdn.net/m0_73671133/article/details/140528023

相关文章

  • rsync数据同步服务,rsync+SSH同步,及inotify实时同步与rsync结合
    Linux系统下数据同步服务rsync一、rsync概述1.rsync的伙伴sync同步:刷新文件系统缓存,强制将修改过的数据写入磁盘,并且更新超级块async异步:将数据先放到缓冲区,在周期性(一般是30s)的去同步到磁盘rsync远程同步:==remodesynchronous==数据同步过程:sync数据同步=>保存⽂......
  • ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中
    ETLCloud是一个全面的数据集成平台,专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构,如微服务和全Web可视化的集成设计,为用户提供了一站式的数据处理解决方案。主要特点和功能包括:实时数据处理:强调实时数据集成能力,这对于需要即时数据分析和决策支持的......
  • 支持多路多算法实时监控与AI计算的智慧能源开源了。
    简介AI视频监控平台,是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,减少企业级应用约95%的开发成本,用户仅需在界面上简单操作,即可实现全视频的接入及布控。  v:159......
  • 通过调用视频分享页,企业的MES、ERP、OA等第三方应用软件轻松直接调取视频监控的实时视
    目录一、企业的管理系统软件为何要调用实时视频监控1、监控与反馈能够实时呈现2、数据一致性和准确性3、增强安全性4、优化生产流程5、提升决策支持能力二、企业的管理系统软件介绍1、ERP系统(1)定义(2)主要功能与特点(3)应用场景2、MES系统(1)定义(2)主要功能与特点(3)应......
  • 美股指数实时行情API接口
    美股指数实时行情API接口#RestfulAPIhttps://tsanghi.com/api/fin/index/USA/realtime?token={token}&ticker={ticker}指定指数代码,获取该指数的实时行情(开、高、低、收、量)。更新周期:实时。请求方式:GET。#测试接口https://tsanghi.com/api/fin/index/USA......
  • BTC比特币实时行情API接口
    BTC比特币实时行情API接口#RestfulAPIhttps://tsanghi.com/api/fin/crypto/realtime?token={token}&ticker={ticker}指定加密货币代码,获取该加密货币的实时行情(开、高、低、收)。更新周期:实时。请求方式:GET。#测试比特币接口https://tsanghi.com/api/fin/cr......
  • 实现基于Spring Boot和WebSockets的实时通讯应用
    实现基于SpringBoot和WebSockets的实时通讯应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!实时通讯应用在现代互联网服务中越来越重要。使用WebSocket可以实现客户端和服务器之间的双向通讯,从而大大提高实时性。本文将介绍如何使用SpringBoot和Web......
  • uniapp [全端兼容] - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海
    前言如果需要Vue版本,请访问这篇文章。在uni-app全平台兼容(H5网页网站、支付宝/微信小程序、安卓App、苹果App、nvue)项目开发中,详解免费安装使用“海康威视监控摄像头”在网页中对接设备并进行实时显示监控画面及各种功能操作控制教程,对接海康视频监控播放及回放......
  • 知识图谱与LLMs:实时图分析(通过其关系的上下文理解数据点)
    大型语言模型(LLM)极大地改变了普通人获取数据的方式。不到一年前,访问公司数据需要具备技术技能,包括熟练掌握各种仪表板工具,甚至深入研究数据库查询语言的复杂性。然而,随着ChatGPT等LLM的兴起,随着所谓的检索增强型LLM应用程序的兴起,隐藏在私人数据库中或可通过各种AP......
  • 针尖对麦芒!Anthropic 推出 Claude Android 可实时翻译!
    Anthropic,作为OpenAI的强劲对手,于本周二正式推出了专为Android用户设计的Claude应用程序,旨在通过拓宽Claude的接入平台,吸引用户从ChatGPT转向其服务。这款Android应用承袭了五月问世的iOS版本的设计理念,用户无需支付任何费用即可体验到Anthropic顶尖AI模型——Claude3.5Sonnet的......