rsync 数据镜像同步服务笔记

1. rsync概述
- 定义:rsync是一款数据镜像备份工具,支持快速完全备份和增量备份,支持本地复制与远程同步。镜像指两份完全相同的数据备份.
- 特点:
- 支持整个目录树和文件系统的更新;
- 可选择性地保留符号链接、文件属性、权限、设备及时间戳等;(scp 不行)
- 安装无需特殊权限;
- 多文件传输效率高;
- 可通过SSH或自定义端口进行数据传输。
- 工作原理:涉及数据同步时,需要确定源地址、目标地址以及同步基准。rsync在同步前需要进行用户身份验证,这取决于使用的连接方式(SSH协议或rsync协议)第一次会完全备份,之后都增量备份。
- 同步基准:例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。
![[Pasted image 20241010202428.png]]
2. rsync实验演示
- 环境准备:两台服务器分别创建目录
/client和/sync`。 -
- RSNC的身份验证机制 ssh登录验证模式 rsync登录验证模式
- ssh协议数据同步:
- 下行同步(下载):从远程服务器拉取数据到本地,命令格式为
rsync -avz 服务器地址:/服务器目录/* /本地目录。 - 上行同步(上传):将本地数据推送到远程服务器,命令格式为
rsync -avz /本地目录/* 服务器地址:/服务器目录。 - rsync协议数据同步:
- 环境搭建:在NFS服务器上配置rsync服务,包括创建配置文件
/etc/rsyncd.conf,创建认证文件/etc/rsyncd_users.db,启动服务。 - 同步操作:使用命令
rsync -avz rsync://用户名@服务器地址/共享模块名 /本地目录进行下载,使用命令rsync -avz /本地目录/* rsync://用户名@服务器地址/共享模块名进行上传。
- rsync 选项解释
- -a:归档模式,递归并保留对象属性 -v:显示同步过程 -z:在传输文件时进行压缩
- RSNC的身份验证机制 ssh登录验证模式 rsync登录验证模式
实验1 ssh登录验证模式 :免密登录
#客户端ssh-keygen -t rsa -b 2048ssh-copy-id 192.168.90.103ssh 192.168.90.103mkdir /client/touch /client/a{1..10}rsync -avz /client/* root@192.168.90.103:/sync/#rsync服务器mkdir -p /sync/cd /sync/
实验2 rsync登录验证模式 rsync协议的免密码可以借助一个环境变量实现
#服务器mkdir /syncuseradd lsy1 #创建同名用户passwd lsy1vim /etc/rsyncd.conf #按需求添加address = 192.168.90.101 #rsync服务绑定IPport 873 #rsync默认服务端口873log file = /var/log/rsyncd.log #日志文件位置pid file = /var/run/rsyncd.pid #进程号文件位置[web] #共享名:用来连接是写在url上的,切记comment = web directory backup #共享描述话语path = /sync #实际共享目录read only = no #是否仅允许读取dont compress = *.gz *.bz2 #哪些文件类型不进行压缩auth users = lsy1 #虚拟用户secrets file = /etc/rsyncd_users.db #认证所需账户密码文件(需自行创建-同上)#没有注释版
address = 192.168.90.101
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[web]comment = web directory backuppath = /syncread only = nodont compress = *.gz *.bz2auth users = lsy1secrets file = /etc/rsyncd_users.dbecho "lsy1:123456" > /etc/rsyncd_users.db #把虚拟用户写入数据库文件chmod 600 /etc/rsyncd_users.db #系统默认不允许身份验证权限过大systemctl enable --now rsyncd #启动服务setfacl -m u:nobody:rwx /sync #给rsync的映射用户(nobody)设置权限或者chown -R nobody.nobody /sync/#客户端 要实现免密登录mkdir /clientcd /client/touch a{1..10}rsync -avz /client/ rsync://lsy1@192.168.90.101/web
echo 'export RSYNC_PASSWORD=123456' >> /etc/profile #声明的环境变量 虚拟用户密码source /etc/profilersync -avz /client/ rsync://lsy1@192.168.90.101/web #这次是免密rm -rf * #可以删除全部在重新用rsync同步·
常见错误
chmod 600
![[Pasted image 20241010214317.png]]
hown -R nobody.nobody /sync/
![[Pasted image 20241010214327.png]]
3.备份
-
手动备份:
-
自动:
定时备份:
定时计划任务方式有规律的进行备份 用crontab -e 即可
![[Pasted image 20241010205012.png]]实时备份(推荐)优点: 一旦客户端出现变化,立即启动备份,实时性好。只要客户端无变化,则不执行备份,节省资源
4. 实验3生产环境常用 配置rsync+inotify实时同步
- inotify简介:Linux内核特性,用于监控文件系统的变化并向应用程序发送相关事件。
- inotify工具:
inotifywait:持续监控文件系统事件,实时输出结果(常用)。inotifywatch:短期监控,任务完成后输出结果。
- 部署步骤:安装
gcc编译器,解压并编译安装inotify-tools。 - 实现方法:编写shell脚本,结合
inotifywait和rsync命令,实现文件系统变化时的即时数据同步。 - 重点:rsync同步时,若使用–delete选项,数据源端不要写 * 匹配,要使用目录级别的数据同步
- rsync -avz --delete /client/ rsync://lsy1@192.168.90.100:/web 删除本地比服务器多出来的文件
#客户端 在以及实现rsync协议免密登录的情况下yum -y install gcc* inotify-toolsinotifywait -mrq -e create,delete,modify,attrib,move /clientrsync -avz /client/ rsync://lsy1@192.168.90.100:/web--delete:删除本地比服务器多出来的文件rsync -avz --delete /client/ rsync://lsy1@192.168.90.100:/web #删除本地比服务器多出来的文件或rsync -avz --delete rsync://lsy1@192.168.90.100:/web /client/#ssh免密登录使用inotifywait -mrq -e create,delete,modify,attrib,move /clientrsync -avz /client/ root@192.168.90.100:/web#或者执行脚本#!/bin/basha="inotifywait -mrq -e create,delete,modify,attrib,move /client"b="rsync -avz /client/ rsync://lsy1@192.168.90.101:/web"$a | while read directory event file do$bdone
5. 实验4配置unison+inotify实现双向实时同步
-
unison简介:支持双向同步的工具,但同步效率低于rsync。
-
环境要求:准备好同步所需的两个目录,生成SSH密钥对,安装
inotify和unison。 -
安装步骤:安装
inotify-tools、ocaml、unison。 -
配置脚本:编写shell脚本,使用
inotifywait监控文件系统变化,使用unison进行双向同步。 -
注意事项:源目录不能使用通配符传输,防止形成死循环。
#客户端和sync服务器都要装
1)先安装inotify
yum -y install gcc* inotify-tools
2)再安装ocaml
tar -xf ocaml-3.10.1.tar.gz
cd ocaml-3.10.1
./configure
make world opt #优化world这个选项
make install
3)安装unison
tar -xf unison-2.13.16.tar.gz
cd unison-2.13.16
make UISTYLE=text THREADS=true STATIC=true #已经存在Makefile文件,不需要./configure
cp unison /usr/local/bin/
#装完要互换ssh公钥文件
``
#分别在客户端和服务器写脚本
#客户端脚本
#!/bin/bash
a="inotifywait -mrq -e create,delete,modify,attrib,move /client"
b="/usr/local/bin/unison -batch /client/ ssh://192.168.90.100//sync/"
$a | while read directory event file
do$b
done#服务器脚本
#!/bin/bash
a="inotifywait -mrq -e create,delete,modify,attrib,move /sync"
b="/usr/local/bin/unison -batch /sync/ ssh://192.168.90.101//client/"
$a | while read directory event file
do$b
done#都脱离终端运行脚本
nohup bash -x sync.sh &#测试
cd /sync touch 文件
cd /client touch 文件
#有bug请在共享目录下创建一个隐藏的参考文件,保证删除最后一个非隐藏文件时也能够正常同步
使用场景:适用于双方都要需要同步更新的场景
![[Pasted image 20241010211857.png]]
6命令扩展
nohup 命令 & #使命令或进程脱离终端运行,即没有用户登录也能运行
#将执行过程和结果放入nohup.out文件中
bash -x xxx.sh #显示执行过程和结果,当做日志功能使用
set -x 执行每个命令之前先打印该命令及其参数
rsync与unison的主要区别?
rsync主要用于单向同步,支持快速完全备份和增量备份,适合生产环境;而unison支持双向同步,适用于需要保持两个目录一致性的场景
相关文章:
rsync 数据镜像同步服务笔记
1. rsync概述 定义:rsync是一款数据镜像备份工具,支持快速完全备份和增量备份,支持本地复制与远程同步。镜像指两份完全相同的数据备份.特点: 支持整个目录树和文件系统的更新;可选择性地保留符号链接、文件属性、权限…...
【layui】多文件上传组件实现
插件预览效果: 需要引入layui的脚本文件layui.js和样式文件layui.css html代码: <div class"layui-input-block"><div class"layui-upload-list"><table class"layui-table"><colgroup><col…...
多维最短路
D-最短?路径_牛客小白月赛102 (nowcoder.com) #include <bits/stdc.h> #define int long long using namespace std; const int N1e6; struct node {int x;int y;int z;bool operator>(const node& other) const {return x> other.x;} }; signed m…...
设计模式03-装饰模式(Java)
4.4 装饰模式 1.模式定义 不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 2.模式结构 抽象构件角色 :定义一个抽象接口以规范准备接收附加责任的对象。客户端可以方便调用装饰类和被装饰类…...
TiDB 监控组件之 Blackbox_exporter 运行原理
作者: TiDBerHailang 原文来源: https://tidb.net/blog/b269e96f 1. 介绍 本文介绍了 TiDB 集群监控组件Blackbox Exporter监控运行机制和配置方式。Blackbox Exporter是Prometheus官方提供的 Exporter,它能够通过多种协议对网络服务进行…...
Java之网络编程详解
一、Java网络编程的基本概念 Java网络编程是指在Java语言中使用网络协议和API进行网络通信的编程技术。Java网络编程可以实现多种应用场景,包括客户端/服务器通信、网站开发、分布式系统等。 二、Java网络编程的基本原理 网络编程的核心概念包括网络通信协议、So…...
苍穹外卖学习笔记(二十)
文章目录 用户端历史订单模块:查询历史订单OrderControllerOrderServiceOrderServiceImpl 查询订单详情OrderControllerOrderServiceOrderServiceImpl 用户端历史订单模块: 查询历史订单 OrderController /*** 历史订单*/GetMapping("/historyOrd…...
2024 第一次周赛
A: 题目大意 骑士每连续 i 天每天会得到 i 个金币,(i 1, 2, 3 , …),那么展开看每一天可以得到的金币数:1 2 2 3 3 3 4 4 4 5 5 5 5 5 … 可以发现就是1个1 ,2个2, 3个3…,那么我…...
【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
文章目录 引入认识 YAML 格式规范定义脱敏规则格式脱敏逻辑实现读取 YAML 配置文件获取脱敏规则通过键路径获取对应字段规则原始优化后 对数据进行脱敏处理递归生成字段对应的键路径脱敏测试 完整工具类 引入 在项目中遇到一个需求,需要对交易接口返回结果中的指定…...
dbt doc 生成文档命令示例应用
DBT提供了强大的命令行工具,它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档,这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…...
【Windows】【DevOps】Windows Server 2022 安装ansible,基于powershell实现远程自动化运维部署 入门到放弃!
目标服务器安装openssh server参考 【Windows】【DevOps】Windows Server 2022 在线/离线 安装openssh实现ssh远程登陆powershell、scp文件拷贝-CSDN博客 注意:Ansible不支持Windows操作系统部署 根据官方说明: Windows Frequently Asked Questions —…...
深入理解 Parquet 文件格式
深入理解 Parquet 文件格式 深入理解 Parquet 文件格式一、引言二、为什么采用 Parquet 格式1. 行式存储的局限性2. 列式存储的优势 三、Parquet 的工作原理1. 文件结构2. 列块和页面3. 编码和压缩 四、具体数据实例1. 数据示例2. 行式存储 vs 列式存储3. 查询性能对比4. 压缩效…...
计算机挑战赛3
老式的计算机只能按照固定次序进行运算,华安大学就有这样一台老式计算机,计算模式为AB#C,和#为输入的运算符(可能是、-或*,运算符优先级与C一致),现给出A,B,C的数值以及和#对应的运算符…...
深度学习:循环神经网络—RNN的原理
传统神经网络存在的问题? 无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。 RNN神经网络 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络。在处理序列输入时具有记忆性…...
蓝桥杯刷题--幸运数字
幸运数字 题目: 解析: 我们由题目可以知道,某个进制的哈沙德数就是该数和各个位的和取整为0.然后一个幸运数字就是满足所有进制的哈沙德数之和.然后具体就是分为以下几个步骤 1. 我们先写一个方法,里面主要是用来判断,这个数在该进制下是否是哈沙德数 2. 我们在main方法里面调用…...
Node.js入门——fs、path模块、URL端口号、模块化导入导出、包、npm软件包管理器
Node.js入门 1.介绍 定义:跨平台的JS运行环境,使开发者可以搭建服务器端的JS应用程序作用:使用Node.Js编写服务器端代码Node.js是基于Chrome V8引擎进行封装,Node中没有BOM和DOM 2.fs模块-读写文件 定义:封装了与…...
多元线性回归:机器学习中的经典模型探讨
引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系,帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…...
域1:安全与风险管理 第1章实现安全治理的原则和策略
---包括OSG 1、2、3、4 章--- 第1章、实现安全治理的原则和策略 1、由保密性、完整性和可用性组成的 CIA 三元组。 保密性原则是指客体不会被泄露给 未经授权的主体。完整性原则是指客体保持真实性且只被经过授权的主体进行有目的的修改。 可用性原则指被授权的主体能实时和…...
【大数据】学习大数据开发应该从哪些技术栈开始学习?
学习大数据开发可以从以下几个技术栈和阶段入手。以下内容按学习顺序和重要性列出,帮助你逐步掌握大数据开发的核心技能: 1. 编程基础 Java:Hadoop 和许多大数据工具(如 Spark、Flink)的核心代码都是用 Java 编写的&…...
CentOS快速配置网络Docker快速部署
CentOS快速配置网络&&Docker快速部署 CentOS裸机Docker部署1.联通外网2.配置CentOS镜像源3.安装Docker4.启动Docker5.CentOS7安装DockerCompose Bug合集ERROR [internal] load metadata for docker.io/library/java:8-alpineError: Could not find or load main class …...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
