rsync 数据镜像同步服务笔记

news2024/10/17 23:24:29

在这里插入图片描述

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:在传输文件时进行压缩

实验1 ssh登录验证模式 :免密登录

#客户端
  ssh-keygen -t rsa -b 2048
  ssh-copy-id 192.168.90.103
  ssh  192.168.90.103
   mkdir /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 /sync
   useradd lsy1                          #创建同名用户
   passwd  lsy1
   vim /etc/rsyncd.conf                   #按需求添加
    address = 192.168.90.101               #rsync服务绑定IP
    port 873                               #rsync默认服务端口873
    log 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 backup
 path = /sync
 read only = no
 dont compress = *.gz *.bz2
 auth users = lsy1
 secrets file = /etc/rsyncd_users.db

echo "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 /client
  cd /client/
  touch a{1..10}
  rsync -avz /client/ rsync://lsy1@192.168.90.101/web
echo 'export RSYNC_PASSWORD=123456' >> /etc/profile   #声明的环境变量 虚拟用户密码
    source /etc/profile
    rsync -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脚本,结合inotifywaitrsync命令,实现文件系统变化时的即时数据同步。
  • 重点:rsync同步时,若使用–delete选项,数据源端不要写 * 匹配,要使用目录级别的数据同步
  • rsync -avz --delete /client/ rsync://lsy1@192.168.90.100:/web 删除本地比服务器多出来的文件
    #客户端 在以及实现rsync协议免密登录的情况下
    yum -y install gcc* inotify-tools
     inotifywait -mrq -e create,delete,modify,attrib,move  /client
     rsync -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  /client
     rsync -avz /client/ root@192.168.90.100:/web


#或者执行脚本
 #!/bin/bash
	a="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
	        $b
	done

5. 实验4配置unison+inotify实现双向实时同步

  • unison简介:支持双向同步的工具,但同步效率低于rsync。

  • 环境要求:准备好同步所需的两个目录,生成SSH密钥对,安装inotifyunison

  • 安装步骤:安装inotify-toolsocamlunison

  • 配置脚本:编写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支持双向同步,适用于需要保持两个目录一致性的场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Orange Pi 5嵌入式应用编程】-BMP280传感器驱动

BMP280传感器驱动 文章目录 BMP280传感器驱动1、BMP280传感器介绍2、BMP280的测量流程2.1 气压测量2.2 温度测量2.3 IIR滤波2.4 滤波器选择2.5 噪声3、BMP280的功耗模式3.1 休眠模式3.2 强制模式3.3 正常模式3.4 模式转换4、数据读取及计算4.1 寄存器数据覆盖4.2 输出补偿4.3 补…

一键生成证件照的开源利器:HivisionIDPhotos使用教程

HivisionIDPhotos使用教程:一键生成证件照的开源利器 HivisionIDPhotos 是一款开源的、轻量级且高效的AI工具,专注于证件照的自动生成。通过这一工具,用户只需上传一张自拍或其他照片,便能快速生成标准尺寸的证件照,免…

跟李沐学AI:Transformer

Transformer架构 (图源:10.7. Transformer — 动手学深度学习 2.0.0 documentation) 基于编码器-解码器架构来处理序列对 与使用注意力的seq2seq不同,Transformer纯基于注意力 多头注意力(Multi-Head Attention) (图源:10.5. 多头注意力 …

MyBatis环境配置详细过程

在此之前我们需要知道Maven和依赖是什么。 什么是Maven? Maven 是一个项目管理和构建自动化工具,最初由Apache软件基金会开发,主要用于Java项目的构建、依赖管理、文档生成和发布。Maven使用一种基于XML的配置文件(pom.xml&…

vue后台管理系统从0到1(6)引入pinia实现折叠功能

文章目录 vue后台管理系统从0到1(6)引入pinia实现折叠功能分析:安装并使用 pinia vue后台管理系统从0到1(6)引入pinia实现折叠功能 分析: 首先,接着上一期,我们项目启动起来应该是…

【算法思想·二叉树】用「遍历」思维解题 II

本文参考labuladongsuanfa笔记[【强化练习】用「遍历」思维解题 II | labuladong 的算法笔记] 如果让你在二叉树中的某些节点上做文章,一般来说也可以直接用遍历的思维模式。 270. 最接近的二叉搜索树值 | 力扣 | LeetCode | 给你二叉搜索树的根节点 root 和一个目…

通信工程学习:什么是SDRAM同步动态随机存取存储器

SDRAM:同步动态随机存取存储器 SDRAM,全称为Synchronous Dynamic Random Access Memory,即同步动态随机存取存储器,是一种广泛应用于计算机和嵌入式系统中的内存技术。以下是对SDRAM的详细介绍: 一、SDRAM的定义与特点…

TimeGen3.2

一、安装 1.安装包下载 软件安装压缩包,点击链接下载,自取。 链接: https://pan.baidu.com/s/1kebJ2z8YPMhqyvDiHLKktw?pwd0000 提取码: 0000 二、解压安装 1.解压 2.安装软件 (1)双击timegen-pro-3.2.exe文件 &#xff…

[CTF夺旗赛] CTFshow Web13-14 详细过程保姆级教程~

前言 ​ CTFShow通常是指网络安全领域中的“Capture The Flag”(夺旗赛)展示工具或平台。这是一种用于分享、学习和展示信息安全竞赛中获取的信息、漏洞利用技巧以及解题思路的在线社区或软件。参与者会在比赛中收集“flag”,通常是隐藏在网络环境中的数据或密码形…

SHCTF-2024-week1-wp

文章目录 SHCTF 2024 week1 wpMisc[Week1]真真假假?遮遮掩掩![Week1]拜师之旅①[Week1]Rasterizing Traffic[Week1]有WiFi干嘛不用呢? web[Week1] 单身十八年的手速[Week1] MD5 Master[Week1] ez_gittt[Week1] jvav[Week1] poppopop[Week1] 蛐蛐?蛐蛐! SHCTF 2024…

一些自定义函数

目录 一.strcmp()函数 二.strstr()函数 三.memcpy函数 四.memmove函数 五.strncpy函数 六.strcat函数 七.atoi函数 八.strlen函数 一.strcmp()函数 strcmp 函数是用于比较两个字符串是否相等的函数。它通过逐个字符比较两个字符串的 ASCII 值,来判断它们的相…

QD1-P3 HTML 基础内容介绍

本节学习&#xff1a;HTML基础语法介绍。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p3 ‍ 一、运行HTML代码 在 HBuilderX编辑器中创建空项目&#xff0c;添加一个 html 文件 <!-- QD1-P3 HTML基础语法 --><!DOCTYPE html> <html><head>&l…

Java面试宝典-并发编程学习01

Java 并发编程学习 1、创建线程的有哪些方式&#xff1f; 创建线程的方式有以下几种&#xff1a; 1. 继承Thread类&#xff1a;创建一个类继承Thread类&#xff0c;并重写run()方法&#xff0c;然后通过创建类的实例来创建线程。 2. 实现Runnable接口&#xff1a;创建一个类实…

PH47框架下BBDB飞控基础开发平台极简教程

1 硬件准备 1.1 一块WeAct 的Stm32F411核心板 1.2 2个USB-TTL模块。 1.3 Stm32开发所必须的如STlink烧写器。 1.4 必要的线材。 2 软件准备 2.1 Stm32开发所必备的Keil开发环境。 2.2 PH47框架代码&#xff0c;下载链接 2.3 CSS及BBDB 控制站工程&#xff0c;下载链接 2.4…

鸿蒙面试的一些可能问到的点

页面跳转 router 鸿蒙中跳转主要有两种&#xff0c;一种是router&#xff0c;一种是Navigation&#xff0c;官方推荐使用Navigation。 Router适用于模块间与模块内页面切换&#xff0c;通过每个页面的url实现模块间解耦。模块内页面跳转时&#xff0c;为了实现更好的转场动效…

7.2-I2C的DMA中断

I2C的DMA中断 请先阅读完I2C的普通中断模式以后再阅读本教程 i2c的DMA模式 1.添加通道 &#xff0c;添加后的参数保持默认 2.可以看到自动给我们DMA添加了中断向量。 保存后只需要将下面_ IT改为_ DMA即可 运行代码 i2c1) { aht20State 4; } } /* USER CODE END 0 */ 以上就…

ssm基于java的网上手机销售系统

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框…

yolov5环境GPU搭建 ,用GPU跑polov5算法

win10NVIDIA GeForce RTX 3050torch1.13.1torchaudio0.13.1torchvision 0.14.1 cuda11.7python3.8cudnn8.7.0 在环境搭建中踩了许多坑&#xff0c;yolov5环境的搭建需要依赖很多环境&#xff0c;用cpu跑很容易跑单张识别&#xff0c;用GPU跑却踩了很多坑&#xff0c;不过GPU环…

Mac 备忘录妙用

之前使用 Windows 的过程中&#xff0c;最痛苦的事是没有一款可以满足我快速进行记录的应用 基本都得先打开该笔记软件&#xff0c;然后创建新笔记&#xff0c;最后才能输入&#xff0c;这么多步骤太麻烦了 在切换到 MacOS 之后&#xff0c;让我惊喜的就是自带的备忘录&#…

【java面经thinking】一

目录 类加载过程 加载&#xff1a; 连接 初始化 GC回收机制&#xff08;垃圾回收&#xff09; 区域 判断对象是否存活 回收机制 HashMap 类加载器 加载标识 加载机制 缓存 自定义加载器&#xff1a; JVM内存结构 常量池 string设置成final 按下网址发生 类加…