首页 > 其他分享 >rsync数据同步服务,rsync+SSH同步,及inotify实时同步与rsync结合

rsync数据同步服务,rsync+SSH同步,及inotify实时同步与rsync结合

时间:2024-07-18 17:54:05浏览次数:8  
标签:rsync 同步 inotify app tdr folder root

Linux系统下数据同步服务rsync


一、rsync概述


1.rsync的伙伴


sync同步:刷新文件系统缓存,强制将修改过的数据写入磁盘,并且更新超级块
async异步:将数据先放到缓冲区,在周期性(一般是30s)的去同步到磁盘
rsync远程同步:==remode synchronous==
数据同步过程:
sync数据同步 => 保存⽂件(⽬标)=> 强制把缓存中的数据写⼊磁盘(⽴即保存),实时性
要求⽐较⾼的场景
asyn数据异步 => 保存⽂件(⽬标)=> 将数据先放到缓冲区,再周期性(⼀般是30s)的去同
步到磁盘,适合⼤批量数据同步的场景


2.rsync特点


1)可以镜像保存整个⽬录树和⽂件系统
2)可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,⽂件acl,⽂件属性(attributes)信息等
3)传输==效率⾼==,使⽤同步算法,只⽐较变化的(增量备份)
4)⽀持匿名传输,⽅便⽹站镜像;也可以做验证,加强安全


3.rsync与scp的区别


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


二、rsync的使用


1.基本用法


rsync [选项] 原数据位置 目标目录位置
-v     详细模式输出
-a     归档模式,递归的方式传输文件,并保持文件的属性
-r      递归拷贝目录
-l      保留软链接
-p     保留原有权限
-t      保留原有时间(修改)
-g     保留属组权限
-o     保留属主权限
-D     -devices  --specials    表示⽀持b,c,s,p类型的⽂件
-R     保留相对路径
-H     保留硬链接
-A      保留ACL策略
-e      指定要执⾏的远程shell命令,ssh更改端⼝常⽤选项     
-E      保留可执行的权限
-X      保留扩展属性信息 


2.本地同步


rsync [选项] 原数据位置 目标目录位置
[root@tdr ~]# rsync -av folder/ /opt/                     //把folder目录下的内容传到/opt/下
[root@tdr ~]# rsync -av folder /opt/                      //把folder目录整个传到/opt/下
[root@tdr ~]# rsync -avR folder /opt/                   //保留相对路径,folder后加不加/都一样,都是把folder目录整个传到/opt/下
[root@tdr ~]# rsync -av folder/f1/ folder/f2/
[root@tdr ~]# touch folder/f1/file5
[root@tdr ~]# tree folder/
folder/
├── f1
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
├── f2
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   └── file4
└── f3
[root@tdr ~]# rsync -av folder/f1/ folder/f2/
[root@tdr ~]# tree folder/
folder/
├── f1
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
├── f2
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
└── f3
//这里看到file5已经被同步过去了
[root@tdr ~]# rm -rf folder/f1/file0
[root@tdr ~]# tree folder/
folder/
├── f1
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
├── f2
│   ├── file0
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
└── f3
[root@tdr ~]# rsync -av --delete folder/f1/ folder/f2/             //删除⽬标⽬录⾥多余的⽂件
[root@tdr ~]# tree folder/
folder/
├── f1
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
├── f2
│   ├── file1
│   ├── file2
│   ├── file3
│   ├── file4
│   └── file5
└── f3
//这里看到file0已经被同步删除了

rsync可以同步文件内容的修改,文件的删除,以及文件的属性的修改


3.远程同步


rsync [选项] 原数据位置 用户@主机地址:目标目录位置
[root@tdr ~]# rsync -av  folder/ [email protected]:/tmp/        //向另一台主机的/tmp/目录传,另一台也要安装rsync
[root@tds ~]# ls /tmp/
f1
f2
f3


4.rsync作为系统服务


默认情况下,rsync只是作为⼀个命令来进⾏使⽤的(ps在查询进程时,找不到对应的服务),但是rsync提供了⼀种作为系统服务的实现⽅式。
Linux系统服务的思路:对外提供服务——>端⼝监听——>==启动服务==——>启动脚本——>配置⽂件

任务解决方案
(1)准备代码文件
[root@tdr ~]# mkdir -p /app/studentweb/src/main/java/co/goho/tangtang.studentweb/
[root@tdr ~]# touch /app/studentweb/src/main/java/co/goho/tangtang.studentweb/file{0..9}.java
(2)把rsync作为系统服务运⾏
[root@tdr ~]# vim /etc/rsyncd.conf                         //配置rsyncd服务的配置⽂件
[app]   
path=/app/studentweb/                                          
log file=/var/log/rsync.log
[root@tdr ~]# systemctl restart rsyncd          //重启服务
在本机上提供了一个针对app/下的项目rsync服务
(3)测试rsync是否可以连接到rsync服务
[root@tds ~]# rsync -a [email protected]::                           //在另一台主机找这个服务,-a:获取rsync服务对应的同步⽬录标签
app   
[root@tds ~]# rsync -av [email protected]::app /tmp              //下载下来
[root@tds ~]# tree /tmp/src/              //树状显示目录
(4)编写计划任务 + Shell的脚本⽂件,⾃动实现代码备份
案例:自动推送拉取文件,使用计划任务每30s推送一次代码
[root@tdr ~]# which rsync                   //找到rsync,使⽤的完整路径 which命令
/usr/bin/rsync
[root@tdr ~]# crontab -e                    //编写计划任务
*/30 * * * * /usr/bin/rsync -av /app/studentweb/ [email protected]:/tmp/
[root@tds ~]# ls /tmp                      //另一台主机查找 
src  


5.为rsynsd服务添加密码


[root@tdr ~]# vim /etc/rsyncd.conf                //在/etc/rsyncd.conf 文件中添加账号和密码文件的路径
auth users=tdcs
secrets file=/etc/rsync.secrets
[root@tdr ~]# vim /etc/rsync.secrets                      //编辑rsync账户密码
tdcs:123
[root@tdr ~]# chmod 600 /etc/rsync.secrets                //为文件设置600权限
[root@tdr ~]# ls -l /etc/rsync.secrets 
-rw-------. 1 root root 9 7月  18 15:19 /etc/rsync.secrets
[root@tdr ~]# systemctl restart rsyncd
去另一台主机
[root@tds ~]# rsync -av [email protected]::abc /tmp
Password:123
[root@tds ~]# ls /tmp
src


三、rsync集合inotify工具实现代码同步(重点)

[root@tdr ~]#  yum -y install inotify-tools                    //下载
-m : ⼀直监控某个⽬录,create、delete、modify等⾏为
-r : 递归,不仅仅监控⽬录还要监控⽬录下的⽂件
-q : 获取操作信息,但是不输出
-e : 哪些⾏为需要被监控,modify,delete,create,attrib,move
modify: ⽂件被修改
delete: ⽂件被删除
create: ⽂件被创建
attrib: ⽂件属性被修改
move: ⽂件被移动
[root@tdr ~]# inotifywait -mr /app/                              //监听这个目录
[root@tdr ~]# vim inotify.sh                          //编写脚本,监听指定⽬录,⼀旦⽬录发上修改,就执⾏指定的指令
#!/bin/bash

/usr/bin/inotifywait -mrq -e modify,delete,create,attrib,move /app/studentweb|while read events 
do
   rsync -av /app/studentweb/ [email protected]:/tmp                        //注意:是另一台主机的IP
done

[root@tdr ~]# chmod 700 inotify.sh                       //添加可执⾏权限
[root@tdr ~]# ./inotify.sh 
另外打开一个本机的终端
[root@tdr ~]# touch /app/studentweb/tds             //随便在监听目录下创建个文件
打开另一台主机
[root@tds ~]# ls /tmp
src  tds                                  //出现这个目录了
回到本机
[root@tdr ~]# nohup ./inotify.sh &                    //放入后台运行
 & : 让inotify.sh在计算机后台运⾏,可以使⽤jobs命令查看,kill %编号:当我们退出
终端时,这个执⾏会⾃动结束
nohup : 让程序⼀直在后台运⾏,即使我们关闭了终端
[root@tdr ~]# jobs
[1]+  运行中               nohup ./inotify.sh &
[root@tdr ~]# kill %1
[root@tdr ~]# jobs
[1]+  已终止               nohup ./inotify.sh

扩展:如何查看rsync.log⽇志⽂件
[root@tdr ~]#  cat /var/log/rsync.log

标签:rsync,同步,inotify,app,tdr,folder,root
From: https://blog.csdn.net/m0_70848838/article/details/140529225

相关文章

  • ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中
    ETLCloud是一个全面的数据集成平台,专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构,如微服务和全Web可视化的集成设计,为用户提供了一站式的数据处理解决方案。主要特点和功能包括:实时数据处理:强调实时数据集成能力,这对于需要即时数据分析和决策支持的......
  • Nuxt.js 中使用 useHydration 实现数据水合与同步
    title:Nuxt.js中使用useHydration实现数据水合与同步date:2024/7/18updated:2024/7/18author:cmdragonexcerpt:摘要:介绍Nuxt.js中useHydration函数,用于控制客户端与服务器数据同步,实现数据水合。参数包括key、get和set函数,适用于多种场景,示例展示数据获取与显示流......
  • Nuxt.js 中使用 useHydration 实现数据水合与同步
    title:Nuxt.js中使用useHydration实现数据水合与同步date:2024/7/18updated:2024/7/18author:cmdragonexcerpt:摘要:介绍Nuxt.js中useHydration函数,用于控制客户端与服务器数据同步,实现数据水合。参数包括key、get和set函数,适用于多种场景,示例展示数据获取与......
  • linux系统和windows系统如何同步时间,服务器时间变动怎么同步
    一、Linux系统时间同步1.使用NTP(网络时间协议)NTP是最常用的Linux系统时间同步方式。NTP通过连接到外部时间服务器(如原子钟或GPS接收器)来获取高精度的时间信息,并校准本地系统时间。步骤:安装NTP客户端:在Ubuntu系统上,可以使用命令sudoapt-getinstallntp安装NTP客户端......
  • NTP时间同步服务器(卫星时钟同步装置)基本架构介绍
    NTP时间同步服务器(卫星时钟同步装置)基本架构介绍NTP时间同步服务器(卫星时钟同步装置)基本架构介绍京准电钟官微——ahjzsz摘要:基于北斗的全球卫星系统(BDS)的高精度同步时钟信号在电网广域测量系统(WAMS)等很多领域具有广泛用途;但在实际应用中存在因卫星失锁等原因导致同步时钟信号......
  • linux 怎么同步下服务器时间?
    在Linux系统中,同步服务器时间可以通过多种方式实现。以下是常见的几种方法:方法1:使用ntpdatentpdate是一个命令行工具,用于手动同步系统时间。要使用ntpdate,请按照以下步骤操作:安装ntpdate对于Debian/Ubuntu系统:sudoaptupdatesudoaptinstallntpdate对于CentOS/RH......
  • 基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误
    1.算法仿真效果本程序系统是《m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序》的的升级。 升级前原文链接 增加了完整的AWGN信道模型的FPGA实现,可以在testbench里面设置SNR,分析不同SNR对应的FPGA误码率情况。 vivado2019.2仿真结果如下(......
  • 使用ETLCloud实现MySQL数据库与StarRocks数据库同步
    在现代数据架构中,数据同步是保证数据一致性和分析准确性的关键步骤之一。本文将介绍如何利用ETLCloud技术实现MySQL数据库与StarRocks数仓数据库的高效数据同步,以及其在数据管理和分析中的重要性。数据同步的重要性在数据驱动的时代,企业依赖于准确、实时的数据分析来做出战略决......
  • Java开发手册中-锁并发-同步调用应该去考量锁的性能损耗-加锁与不加锁性能对比
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751参考以上性能测试工具的使用。Java中数据同步-synchronized关键字与Mointor(jconsole)的使用:https://blog.csdn.net/......
  • 手机收到的验证码同步到电脑中
    介绍在手机收到包含验证码的短信后,电脑中可以直接粘贴出验证码电脑windows11,手机小米13实现方法通过脚本获取手机验短信中的验证码我是因为刷了类原生系统,如果手机自带复制验证码,跳过这一步即可通过Shizuku授权软件'自动任务',自带有预置任务可以获取手机短信中......