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 …...
4090D显存无忧!Guohua Diffusion优化策略详解,小白也能稳定运行
4090D显存无忧!Guohua Diffusion优化策略详解,小白也能稳定运行 1. 工具概览:专为4090D优化的国风绘画神器 Guohua Diffusion是一款基于原生国风扩散模型开发的本地绘画生成工具,针对NVIDIA RTX 4090D显卡进行了深度优化。不同于…...
全面掌握ESP WiFi中继器DHCP服务器配置:高效管理嵌入式设备网络
全面掌握ESP WiFi中继器DHCP服务器配置:高效管理嵌入式设备网络 【免费下载链接】esp_wifi_repeater A full functional WiFi Repeater (correctly: a WiFi NAT Router) 项目地址: https://gitcode.com/gh_mirrors/es/esp_wifi_repeater ESP WiFi中继器是一款…...
一文读懂水面无人艇:每个硬件模块到底负责什么
目录 一、水面无人艇完整系统 二、硬件搭配负责哪些功能 2.1 艇体模块:决定“能不能稳、能不能装、能不能扛风浪” 2.2 动力与航行执行模块:决定“怎么动” 2.3 导航传感器模块:决定“我现在在哪、朝哪、跑多快” 1)GPS / 北…...
Blaze表达式优化完全手册:提升计算性能的7个核心策略
Blaze表达式优化完全手册:提升计算性能的7个核心策略 【免费下载链接】blaze NumPy and Pandas interface to Big Data 项目地址: https://gitcode.com/gh_mirrors/bl/blaze Blaze作为NumPy和Pandas风格的大数据接口工具,能够帮助用户轻松处理各类…...
如何高效使用NumPy结构化数组:处理复杂数据格式的终极指南
如何高效使用NumPy结构化数组:处理复杂数据格式的终极指南 【免费下载链接】numpy numpy/numpy: NumPy 是一个用于 Python 的数值计算库,提供了多种数学函数和工具,可以用于数值计算和科学计算,支持多种数学函数和工具,…...
PdgCntEditor三步搞定PDF书签目录自动生成
1. 为什么你需要PDF书签目录? 每次打开几百页的PDF文档,像无头苍蝇一样滑动滚动条找内容?这种体验我太懂了。上周处理一份300多页的技术手册,光是翻目录就花了半小时,直到我发现PdgCntEditor这个神器。它能把杂乱无章…...
KiCanvas:浏览器中的KiCAD设计查看器,5分钟快速入门指南
KiCanvas:浏览器中的KiCAD设计查看器,5分钟快速入门指南 【免费下载链接】kicanvas The KiCAD web viewer 项目地址: https://gitcode.com/gh_mirrors/ki/kicanvas 想要在浏览器中直接查看KiCAD电路设计文件,无需安装任何软件…...
PCS双向储能变流器Buck - Boost闭环控制仿真复现之旅
PCS双向储能变流器Buck-Boost闭环控制仿真【复现】 复现参考文献:《储能电站变流器设计与仿真研究_尹世界》 三相PWM变流器控制:采用电压外环、电流内环双闭环PI控制,电压环稳定直流测电容电压700V,电网电压和电容电流前馈&#x…...
从‘偏差-方差’到一行代码:用NumPy/PyTorch五步实现GAE,附PPO实战避坑点
从‘偏差-方差’到一行代码:用NumPy/PyTorch五步实现GAE,附PPO实战避坑点 强化学习中的策略优化常常面临一个核心挑战:如何准确评估动作的价值?广义优势估计(GAE)通过巧妙平衡偏差与方差,成为PP…...
超越单一工具:在快马平台探索多模型ai辅助开发的全新工作流
在开发过程中,AI辅助工具已经逐渐成为提升效率的利器。最近我在尝试使用InsCode(快马)平台时,发现它提供的多模型AI辅助开发能力,远比单一工具更加强大和灵活。下面分享一个我实践的综合示例项目,展示如何利用平台的多模型能力优化…...
