linux实现rsync+sersync实时数据备份

1.概述

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具

2.端口和运行模式

tcp/873

采用C/S模式(客户端/服务器模式)

3.特点

  • 可以镜像保存整个目录和文件
  • 第一次全量备份(备份全部的文件),之后是增量备份(只备份变化的文件)

4. 数据同步方式

  • 推(push) 本地将数据发送到远程服务器
  • 拉(pull) 远程服务器获取数据到本地

5.rsync命令

  • 基本用法 rsync 选项 源文件位置 目标文件位置

  • 选项

    -a,--archive 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于-rlptgoD
    -r,–recursive 对子目录以递归模式处理,即同步所有下面的数据
    -l,--links 表示拷贝链接文件
    -p , --perms 表示保持文件原有权限
    -t , --times 表示保持文件原有时间
    -g , --group 表示保持文件原有属用户组
    -o , --owner 表示保持文件原有属主
    -D , --devices 表示块设备文件信息
    -z , --compress 表示压缩传输
    -H 表示硬连接文件
    -A 保留ACL属性信息(需配合-p选项)
    -P 显示传输进度
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    --port=PORT 定义rsyncd(daemon)要运行的Port(预设为tpc  873)
    --delete 删除那些目标位置有而原始位置没有的文件
    --password-file=FILE 从FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes /second
    --filter “-filename” 需要过滤的文件
    --exclude=filename :需要过滤的文件
    -v 显示同步过程的详细信息
    #常用的-avz
    #补充:如果传输的特别大的文件,就不要用z 参数,因为压缩和解压比较耗时
    
  • 示例

    #格式1
    rsync  选项  rsync://用户名@同步源服务器IP:/共享模块名  目标目录  
    rsync -avz --delete rsync://backuper@192.168.98.143:/test /test  
    #--delete 是删除服务端(下面实验的主机A)没有的文件
    #格式2
    rsync  选项  用户名@同步源服务器IP::共享模块名  目标目录  
    rsync -avz --delete backuper@192.168.98.143::test /test
    

6.实验

主机ip 地址
A192.168.98.143
B192.168.98.140
(1).数据同步
  • 在主机A上编写rcync的配置文件

    vim /etc/rsyncd.confuid = rootgid = rootaddress = 192.168.98.143 #写的是本机的ip地址否则服务无法启动use chroot = yesport = 873 #定义端口hosts allow = 192.168.98.0/24 #定义允许访问的地址max connections = 4pid file = /var/run/rsyncd.pid #进程id文件lock file = /var/run/rsyncd.lock #日志文件log file = /var/log/rsyncd.log #锁文件motd file = /etc/rsyncd.motd #消息文件[backup] #模块名path = /test  #备份路径comment = backup area #描述read only = yes #是否只读list = yes #是否隐藏模块列表auth users = b1 #备份所使用的用户secrets file = /etc/rsync.passwd #校验文件,包含用户名和密码的文件,用户名是			auth users的值	
    
  • 创建描述文件和校验文件

    echo "I am backup server" > /etc/rsyncd.motd #创建描述文件
    echo  "b1:123456" >> /etc/rsync.passwd #创建用户名和密码文件
    chmod 600 /etc/rsyncd.passwd #设置校验文件的权限,不设置会报错
    
  • 开启服务

    rsync --daemon --config=/etc/rsyncd.conf  #指定配置文件并启动服务
    ss -anputl | grep 873 #查看服务是否启动
    systemctl stop firewalld 
    setforce 0
    iptables -F #关闭防火墙
    
  • 主机B测试

    sync -avz --delete b1@192.168.98.143::backup /test  #输入/etc/rsync.passwd中定义的密码
    #免密备份
    vim /etc/rsync.passwd #在主机B上创建文件123456 #只写密码不写用户名,输入/etc/rsync.passwd中定义的密码
    chmod 600 /etc/rsync.passwd  #修改文件权限否则会报错
    sync -avz --delete b1@192.168.98.143::backup /test  --password-file=/etc/rsync.passwd  #指定密码文件
    
(2).实时数据同步(rsync+sersync)

目的:将主机B的数据实时同步到主机A上

  • 修改主机A的rsync的配置文件

    uid = root
    gid = root
    address = 192.168.98.143
    use chroot = yes
    port = 873
    hosts allow = 192.168.98.0/24
    max connections = 4
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    motd file = /etc/rsyncd.motd[backup]path = /testcomment = backup area read only = false  #在上述实验的基础上只修改这里list = yesauth users = b1secrets file = /etc/rsync.passwd
    
  • 主机B安装sersync

    #使用tar包解压后直接使用
    tar -xf  sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt/mv /opt/GNU-Linux-x86 /opt/sersync  #修改文件名cp /opt/sersync/confxml.xml{,.bak}  #备份配置文件
    #修改配置文件vim /opt/sersync/confxml.xml#修改第24-28行<localpath watch="/monitored">  #本地监控目录<remote ip="192.168.98.143" name="backup"/> #主机A(rsync主机的ip),模块名<!--<remote ip="192.168.8.39" name="tongbu"/>--><!--<remote ip="192.168.8.40" name="tongbu"/>--></localpath>#修改第31-34行<commonParams params="-artuz"/><auth start="true" users="b1" passwordfile="/etc/rsync.passwd"/>  #users是备份使用的用户,rsync配置文件中定义的用户, passwordfile就是rsync的校验文件,包含用户名和密码<userDefinedPort start="false" port="874"/><!-- port=874 --><timeout start="false" time="100"/><!-- timeout=100 --><ssh start="false"/>
    
  • 主机B开启守护进程同步数据

    #创建校验文件,修改权限
    echo "123456" > /etc/rsync.passwd  && chmod 600 /etc/rsync.passwd  
    /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml #开启服务,停止服务使用kill命令
    mkdir /monitored  && echo "hello linux !!!" >> /monitored/1.txt  #更改监听的目录查看是否会同步到主机A
    

    在这里插入图片描述

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

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

相关文章

【第30节】MFC编程:ListCtrl控件和TreeCtrl控件

目录 引言 一、高级控件ListCtrl 二、高级控件TreeCtrl 三、Shell控件 四、CImageList 五、综合代码示例 引言 在MFC编程里&#xff0c;高级控件能大幅提升应用程序的交互性与功能性。接下来&#xff0c;咱们会详细讲讲ListCtrl和TreeCtrl这两个高级控件。不仅会介绍它们…

为什么 ThreadLocalMap 的 key 是弱引用 value是强引用

问题一&#xff1a;为什么 ThreadLocalMap 的 key 是弱引用&#xff1f; 【假设 Entry 的 key 是对 ThreadLocal 对象的强引用】&#xff1a;这个 Entry 又持有 ThreadLocal 对象和 value 对象的强引用。如果在其他地方都没有对这个 ThreadLocla 对象的引用了、然后在使用 Thr…

DeepSeek本地部署(linux)

一、下载并安装Ollama 1.下载Ollama Ollama官网:Ollama 点击"Download",会跳转至下载页面。 1.1在线下载安装 可复制此命令到Linux服务器进行在线下载,如下载速度过慢,可选择离线下载安装。 curl -fsSL https://ollama.com/install.sh | sh1.2离线下载安装 …

基于Halcon仿VM流程列表的执行效果

Halcon本身应用需要一定的门槛&#xff0c;但是也可以封装成类似VM简单易操作的样子 上期文章分享的是连线功能&#xff0c;本期分享数据传参 1&#xff0c;定义通用属性和方法 public class BaseModel {public HObject HInput { get; set; }//图像输入public HObject HOutpu…

打车APP订单系统逻辑梳理与实现

一、逻辑分析 打车 APP 订单系统是整个打车业务的核心&#xff0c;负责处理从乘客下单到行程结束的一系列流程&#xff0c;涉及乘客、司机和平台三方的交互。 乘客端 下单&#xff1a;乘客打开 APP&#xff0c;输入上车地点、目的地&#xff0c;选择车型等信息后提交订单。此时…

杂草YOLO系列数据集4000张

一份开源数据集——杂草YOLO数据集&#xff0c;该数据集适用于农业智能化、植物识别等计算机视觉应用场景。 数据集详情 ​训练集&#xff1a;3,664张高清标注图像​测试集&#xff1a;180张多样性场景样本​验证集&#xff1a;359张严格筛选数据 下载链接 杂草YOLO数据集分…

算法 | 河马优化算法原理,公式,应用,算法改进及研究综述,matlab代码

以下是关于河马优化算法(Hippopotamus Optimization Algorithm, HO)的完整综述,包含原理、公式、应用场景、改进方向及可直接运行的 Matlab 完整代码。一、算法原理 河马优化算法(HO)由Amiri等人于2024年提出,是受河马群体行为启发的元启发式算法,其核心基于以下三阶段行…

知识就是力量——HELLO GAME WORD!

你好&#xff01;游戏世界&#xff01; 简介环境配置前期准备好文章介绍创建头像小功能组件安装本地中文字库HSV颜色空间音频生成空白的音频 游戏UI开发加载动画注册登录界面UI界面第一版第二版 第一个游戏&#xff08;贪吃蛇&#xff09;第二个游戏&#xff08;俄罗斯方块&…

Android Activity 的 launchMode 与 Task Stack 管理

Android 中的 android:launchMode 决定了 Activity 在启动时如何在任务栏中管理它的存在方式。下面我们来结合 Task Stack 管理详细解释。 1. android:launchMode 的四种模式 1.1 standard (标准模式, 默认) 启动方式&#xff1a;每次启动都会创建一个新实例并压入栏任务堆中…

2025选择手机之我见

自从开店之后&#xff0c;没当有手机召开发布会&#xff0c;我就得去大概看看&#xff0c;了解一下屏幕&#xff0c;充电之类的东西。毕竟跟我的生意息息相关&#xff0c;而且还得研究要不要上新&#xff0c;从我目前卖货的情况来看&#xff0c;折叠屏不是大众的选择&#xff0…

【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目

文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中&#xff0c;智能合约的审计和分析至关重要。…

利用 PCI-Express 交换机实现面向未来的推理服务器

在数据中心系统的历史上&#xff0c;没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴&#xff0c;因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…

智能交通预警杆:守护道路安全的科技先锋

在城市化进程加速以及机动车保有量持续增长的背景下&#xff0c;道路交通安全与拥堵问题渐趋严峻。智能交通预警杆应时而生&#xff0c;其集成多种高科技功能&#xff0c;正逐步成为现代城市交通管理中至关重要的智能装备&#xff0c;对于提升交通效率、保障出行安全发挥着关键…

flink 基站与服务器长连接,每次连接和断开都会上报数据,统计过去一小时每个基站断开次数和时长

模拟生成数据 CREATE TABLE ods_station_log (base_station_id int, -- 基站IDevent_type int, -- 事件类型: connect/disconnectevent_time TIMESTAMP_LTZ(3), -- 事件时间WATERMARK FOR event_time AS event_time - INTERVAL 5 SECOND -- 允许5秒乱序 ) WITH …

自定义一些C语言的字符串函数

一、代码如下 (一)十六进制字符串转十进制整数 #include<stdio.h> // 把一个十六进制字符转成十进制整数 int hexToInt(char hexs[]){ int index; int k 0; for(k 0; ; k) { if(hexs[k] \0) { index k; break; …

核函数(机器学习深度学习)

一、核函数的基本概念 核函数&#xff08;Kernel Function&#xff09; 是机器学习中处理非线性问题的核心工具&#xff0c;通过隐式映射将数据从原始空间转换到高维特征空间&#xff0c;从而在高维空间中实现线性可分或线性建模。其数学本质是计算两个样本在高维空间中的内积…

微服务架构中的精妙设计:服务注册/服务发现-Eureka

一.使用注册中心背景 1.1服务远程调用问题 服务之间远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺点&#xff1a; 当更换机器, 或者新增机器时, 这个URL就需要跟着变更, 就需要去通知所有的相关服…

极速版:栈的内存/局部变量表/堆的内存细分

1. 栈的存储 每个线程都有自己的栈&#xff0c;栈中数据以栈帧&#xff08;Stack Frame&#xff09;为基本单位 线程上正在执行的每个方法都各自对应一个栈桢&#xff08;Stack Frame&#xff09; 栈桢是一个内存区块&#xff0c;是一个数据集&#xff0c;维系着方法执行过程…

【操作系统】内存泄漏 vs 内存碎片

【操作系统】内存泄漏 vs 内存碎片 内存泄漏&#xff08;Memory Leak&#xff09; vs 内存碎片&#xff08;Memory Fragmentation&#xff09;1. 内存泄漏&#xff08;Memory Leak&#xff09;2. 内存碎片&#xff08;Memory Fragmentation&#xff09;3. 内存泄漏 vs 内存碎片…

力扣HOT100之矩阵:73. 矩阵置零

这道题我没有想到什么好的办法&#xff0c;直接暴力AC了&#xff0c;直接遍历两次矩阵&#xff0c;第一次遍历用两个向量分别记录出现0的行数和列数&#xff0c;第二次遍历就判断当前的元素的行数或者列数是否出现在之前的两个向量中&#xff0c;若出现了就直接置零&#xff0c…