【简单认识rsync远程同步】

news2024/9/22 19:29:52

文章目录

  • 一.rsync
    • 1、简介
    • 2.rsync应用场景
    • 3、 rsync+inotify的应用场景
    • 4、 rsync+cron的应用场景
  • 二.配置rsync备份源(同步方式)
    • 1.rsync同步源
    • 2.同步方式
    • 3.备份的方式
  • 三.常用rsync命令
    • 3.配置源的两种表达
  • 四、配置rsync实现同步
    • 1.使用ip表达式同步
    • 2.使用url表达式同步
    • 3.不存在的文件也同步
    • 4.免交互访问同步目录
    • 5.使用ssh访问
  • 五、实时同步
    • 1.优势
    • 2.实现方式
    • 3.配置


一.rsync

1、简介

rsync(Remote sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

2.rsync应用场景

(1)文件和目录备份: rsync可以对文件和目录进行快速、高效的备份。它使用差异算法进行文件同步,只传输差异部分,避免了重复传输的问题,从而实现快速备份。

(2)文件镜像和复制: 在分布式环境中,多个节点需要保持一致性。rsync可以实现节点间的文件同步和复制,使得分布式文件系统保持一致性并及时反映文件更改。

(3)远程文件同步: rsync可以将本地和远程文件的变更快速地同步,通过网络进行文件传输,并自动检测并传输差异部分,从而减少网络带宽和传输时间。

(4)自动化脚本运行: rsync可以结合脚本进行自动化的文件同步和备份。在定期运行脚本中,rsync会对目标文件夹进行快速同步,达到自动化备份文件的目的。

(5)带宽限制文件同步: rsync支持带宽限制同步,用户可以对上传和下载带宽进行限制控制。在网络条件不好或者流量支付较高的场景中,控制带宽可以有效减少数据传输时间,节约资源。

总:rsync拥有强大的文件同步和备份功能,广泛应用于各种场景下,可以为用户提供高效的数据备份、远程文件访问等服务。

3、 rsync+inotify的应用场景

inotify——监控

(1)文件备份和镜像: 可以使用rsync和inotify结合来定期或实时备份重要文件和目录,以确保数据的安全性和可恢复性。当被监视的文件或目录发生变化时,inotify将触发rsync命令,将变更部分快速同步到备份位置。

(2)分布式文件系统同步: 在分布式系统中,多个节点之间的文件需要保持一致性。通过结合rsync和inotify,可以实现节点间的实时文件同步,使得分布式文件系统保持一致性并及时反映文件更改。

(3)实时网站同步: 在多台服务器部署的网站环境中,当网站的静态资源或动态内容发生变化时,需要即时地将这些更改同步到其他服务器上,以提供一致的用户体验和高可用性。使用rsync和inotify结合可以实现实时的网站内容同步。

(4)实时日志备份和分析: 对于有大量产生日志的系统,如服务器集群、应用程序等,可以使用rsync和inotify结合将产生的日志文件实时备份到集中的存储位置,并进行实时的分析和处理。

注:rsync和inotify的结合使用需要考虑到资源消耗和性能问题。

在高频率的文件变更场景中,频繁的同步操作可能会导致高CPU使用率和带宽消耗。因此,在设计和配置时需要权衡实时性与性能之间的关系,并进行合理的调整。

4、 rsync+cron的应用场景

cron是一种常用的Linux定时任务工具,可以定期执行一些任务,例如文件备份、日志清理、数据统计等操作。我们可以使用cron的定时功能,运行一个脚本,该脚本会调用rsync命令,来实现文件的定时/周期性同步。

在使用rsync和cron结合实现文件同步时,需要注意以下几点:

确定同步的时间间隔和方式
我们需要确定文件同步的时间间隔和同步方式。时间间隔的长短和同步方式的选择,将会直接影响到文件同步的实时性和资源利用率。

保证同步的准确性和安全性
我们需要确保文件在同步的过程中不会丢失或被篡改,同时也需要保证同步的准确性和安全性,避免恶意攻击和数据泄露等问题。

设置日志和监控
为了方便问题的追踪和排查,我们需要在文件同步过程中设置相应的日志记录和监控机制,及时发现和解决问题。

总:结合rsync和cron实现文件同步需要综合考虑多个因素,根据具体的需求选择合适的方式和策略

二.配置rsync备份源(同步方式)

1.rsync同步源

指备份操作的远程服务器,也称为备份源
运营模式:客户端模式、服务端模式
即是cs模式:点到点的传输方式
监听端口:873

2.同步方式

(1) 宽整备份:每次备份都是从备份源将所有的文件或目录备份到目的地

(2) 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。

(3) 增量备份:备份上次备份以后有变化的数据(他才不管是那类型的备份,有变化的数据就备份,他会清除存档属性 )

3.备份的方式

(1)发起端:负责rsync 同步操作的客户机叫做发起端,通知服务器我要备份你的数据

(2)备份源:负责响应来自客户机rsync,同步操作的服务器叫做备份源,需要备份的服务器

(3)服务端:运行rsyncd服务,一股来说,需要备份的服务器

(4)客户端:存放备份数据

三.常用rsync命令

1.基本格式
rsync [选项] 原始位置 目标位置

2.常用选项
-r	递归模式,包含目录及子目录中的所有文件
-l	对于符号链接文件仍然复制为符号链接文件
-v	显示同步过程的详细信息
-z	在传输文件时进行压缩
-a	归档模式,保留文件的权限、属性等信息
-p	保留文件的权限标记
-t	保留文件的时间标记
-g	保留文件的属组标记(仅超级用户使用)
-o	保留文件的属主标记(仅超级用户使用)
-H	保留硬连接文件
-A	保留 ACL属性信息
-D	保留设备文件及其他特殊文件
–delete	删除目标位置有而原始位置没有的文件
–checksum	根据校验和(而不是文件大小、修改时间) 来决定是否跳过文件

3.配置源的两种表达

格式一

用户名(rsync用户)@主机地址::共享模块名
rsync -avz backuper@192.168.198.13(服务端地址)::wwwroot /opt/

格式二

rsync://用户名@主机地址/共享模块名rsync -avz rsync://backuper@192.168.198.13(服务端地址)/wwwroot /opt/

四、配置rsync实现同步

#修改rsyncd配置
vim /etc/rsyncd.conf
 uid = root    #指定用户名和用户组
 gid = root
 use chroot = yes    #限制在共享目录(提高安全性,不允许切换)
 max connections = 4
 address 192.168.116.40    #监听地址(本机ip)和端口(默认本机的873端口)
 port 873
 log file = /var/log/rsyncd.log
 pid file = /var/run/rsyncd.pid
 hosts allow = 192.168.116.0/24    #允许访问的地址网段(不设置默认允许所有)
 exclude = lost+found/
 transfer logging = yes    #传输时开启日志
 timeout = 900    #超时时间
 ignore nonreadable = yes    #开启忽略不可读文件
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2    #对压缩文件不进行压缩
 
#指定远程同步模块
 [webroot]
    path = /var/www/html    #根路径
    comment = this is web root doucument    #描述
    read only = yes    #开启只读
    auth users = rsyncduser    #认证用户的用户名
    secrets file = /root/rsyncd_list    #认证用户的用户名和密码存放文件
 
#在用户列表文件中添加用户名和密码(配置中需要调用)
vim /root/rsyncd_list
rsyncduser:123456
 
#还要给用户列表文件授权
chmod 600 rsyncd_list
 
#还要给共享根目录授予可读权限
#chmod +r /var/www/html/

启动服务

rsync --daemon

需要关闭可以杀死rsyncd的进程号,然后删除pid文件 

在这里插入图片描述

在同步源的共享模块根目录下创建文件用于同步测试

在这里插入图片描述

1.使用ip表达式同步

在这里插入图片描述
在这里插入图片描述

2.使用url表达式同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.不存在的文件也同步

--delete        同步源中不存在,客户端也会删除同步源中不存在的文件,实现目录的同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.免交互访问同步目录

--password-file=密码文件        自动认证密码,实现免交互

在这里插入图片描述

5.使用ssh访问

-e 'ssh -p 22'        之前的方式都是使用认证模块,使用ssh可以用root登录,更加灵活

在这里插入图片描述

五、实时同步

1.优势

定期同步的不足:执行备份的时间固定,延迟明显、实时性;当同步源长期不变化时,密集的定期任务是不必要的。

实时同步的优点:—旦同步源出现变化,立即启动备份只要同步源无变化,则不执行备份。

2.实现方式

发起端配置rsync+inotify,使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为inotify通知机制由Linux内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

3.配置

先修改同步源配置文件

vim /etc/rsyncd.conf
#关闭只读(为实现上行同步)
read only = no
 
#重启服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
rsync --daemon
 
#放通共享目录权限
chmod 777 /var/www/html/

在这里插入图片描述
调整inotify内核参数

    在Linux内核中,默认的inotify机制提供了三个调控参数: max queue events(监控事件队列,默认值为16384)、max user instances (最多监控实例数,默认值为128)、Imax_user watches (每个实例最多监控文件数,默认值为812)。当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。

在这里插入图片描述

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
#加载配置
sysctl -p

在这里插入图片描述
(2)客户端安装和使用inotify-tools

用inotify机制还需要安装inotify-tools,以便提供inotifywait、inotifywatch辅助工具程序,用来监控、汇总改动情况。
inotifywait:可监控modify (修改)、create(创建)、move(移动)、delete(删除) 、attrib(属性更改)等各种事件,一有变动立即输出结果。
inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。
#准备inotify-tools源码包
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure && make && make install

使用indotifywait监控共享目录,客户端开启另一个终端增删改共享目录中文件

inotifywait -mrq -e create,modify,move,delete 监控目录
        -e        用来指定要监控哪些事件
        -m       表示持续监控
        -r         表示递归整个目录
        -q        简化输出信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编写脚本实现实时同步
效果是监控共享目录,一旦发生改变,则rsync执行同步,上行同步到同步源。
注意:脚本文件名不能包含rsync,否则无法实现效果
在这里插入图片描述
加入开机自动执行
在这里插入图片描述
测试
删除客户端所有内容,同步源中也全部删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup,作为SFU服务器,只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间,每个app同时发布一路视频和一路音频,并且接受来自其他app的音视频流,mediasoup内部的结构如下&…

Docker快速入门笔记

Docker快速入门 前言 当今软件开发领域的一股热潮正在迅速兴起,它融合了便捷性、灵活性和可移植性,让开发者们欣喜若狂。它就是 Docker!无论你是一个初学者,还是一位经验丰富的开发者,都不能错过这个引领技术浪潮的工…

【Git】多人协作-多分支协作

文章目录 准备工作多人协作场景2-多分支协作补充:关于建立连接 远程分⽀删除后,本地依然能看到的解决办法 准备工作 在windosw环境下,再克隆同一个项目仓库,模拟一起协作开发的小伙伴 到此,相当于有了两个⽤⼾&#x…

344.翻转字符串+387.字符串中的第一个唯一字符

目录 一、翻转字符串 二、字符串中的第一个唯一字符 一、翻转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverseString(vector<char>& s) {int start0;int end s.size()-1;while(start < end){swap(s[sta…

超详细!Jmeter性能测试

前言 性能测试是一个全栈工程师/架构师必会的技能之一&#xff0c;只有学会性能测试&#xff0c;才能根据得到的测试报告进行分析&#xff0c;找到系统性能的瓶颈所在&#xff0c;而这也是优化架构设计中重要的依据。 测试流程&#xff1a; 需求分析→环境搭建→测试计划→脚…

安装使用 StableDiffusionWebUI

安装使用 StableDiffusionWebUI 1 什么是 StableDiffusionWebUI2 如何完美运行 StableDiffusionWebUI 1 什么是 StableDiffusionWebUI StableDiffusion 并不是一个真正意义上的软件&#xff0c;它是由 Github 上一位叫 automatic1111 的开发者将 StableDiffusion 的源代码做了一…

Go语言入门:从零开始的快速指南(一)

文章目录 引言Go语言的诞生背景Go 语言的特性安装Go语言环境集成开发环境安装第一个Go程序Go 源代码的特征解读 引言 Go语言&#xff08;也称为Golang&#xff09;是一种开源的、静态类型的编程语言&#xff0c;由Google开发。它的设计目标是简单、高效、安全、并且易于学习和…

使用 Docker Compose 部署 Redis Cluster 集群,轻松搭建高可用分布式缓存

Redis Cluster&#xff08;Redis 集群&#xff09;是 Redis 分布式解决方案的一部分&#xff0c;它旨在提供高可用性、高性能和横向扩展的功能。Redis Cluster 能够将多个 Redis 节点组合成一个分布式集群&#xff0c;实现数据分片和负载均衡&#xff0c;从而确保在大规模应用场…

Nacos 下载安装教程

文章目录 事先准备下载并启动 Nacos设置 Nacos 开机自启动开放 Linux 外部访问权限访问 Nacos 管理界面附录 笔者的运行环境&#xff1a; 安装成功过的 Nacos&#xff1a; Nacos 2.2.3 安装成功过的 Java&#xff1a; Java 17.0.7 安装成功过的 Linux&#xff1a; RedHat Ent…

学习Node.js的基础知识和核心概念(全面)

Node.js&#xff0c;这个神奇的技术&#xff0c;融合了前端与后端的力量&#xff0c;让JavaScript在服务器端发挥了异乎寻常的魔力。本文将通过代码和文字解释&#xff0c;全面介绍Node.js的特点&#xff0c;从异步非阻塞I/O到强大的模块系统&#xff0c;再到丰富的包管理和事件…

计算机软件著作权登记申请表-模板

计算机软件著作权登记申请表 软件基本信息 软件全称 Xxxxx软件 软件简称&#xff08;如无则不填&#xff09; 分类号 说明:在附件图1-计算机软件分类代码表中提供的分类编号选择填写 计算机软件分类代码&#xff08;单选&#xff09; 30104 计算机软件适用的国民经济代…

C++学习day--17 二级指针、数组指针、指针数组

1、二级指针 二级指针的定义&#xff1a; 二级指针也是一个普通的指针变量&#xff0c;只是它里面保存的值是另外一个一级指针的地址 int guizi1 888; int *guizi2 &guizi1; //1 级指针&#xff0c;保存 guizi1 的地址 int **liujian &guizi2; //2 级指针&a…

操作系统使用免密登录

服务器免密登录 背景 在工作中使用密码登录有时候会出现这样或者那样的不方便&#xff0c;一是密码要输入&#xff0c;如果明文输入则不安全&#xff0c;二则一旦修改密码要重新分发到有权限的小伙伴 场景 在之前的工作中有很多场景需要免密等登录&#xff0c;使用免密带来…

Lvs missing port问题实例

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 LVS相关文章链接: LVS 流程 SVS 流程 LVS extract net方法

QMLDay2:圆角按钮,关联键盘左右键,鼠标点击。状态切换控制。

QMLDay2 test1 作用&#xff1a; 圆角按钮&#xff0c;关联键盘左右键&#xff0c;鼠标点击。状态切换控制。 代码&#xff1a; import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truecolor: "wh…

H.265/HEVC 速率控制

文章目录 速率控制视频编码速率控制速率控制的基本原理缓冲机制速率控制技术 H.265/HEVC 速率控制1. 目标比特分配2. 量化参数确定 速率控制 目前实际的视频编码率失真优化过程包括两部分&#xff1a;速率控制部分将视频序列分成编码单元&#xff0c;考虑编码单元的相关性通过…

C#,数值计算——t-分布(Student distribution)的计算方法与源程序

在概率论和统计学中&#xff0c;学生t-分布&#xff08;Students t-distribution&#xff09;经常应用在对呈正态分布的总体的均值进行估计。它是对两个样本均值差异进行显著性测试的学生t测定的基础。t检定改进了Z检定&#xff08;en:Z-test&#xff09;&#xff0c;不论样本数…

【PyQt实现复现框CheckBox】

PyQt实现复现框CheckBox 1 安装环境2 CtrlN&#xff0c;新建Main Window窗口&#xff0c;保存为checkBox.ui文件3 CheckBox的三种状态4 实现通用复选框的选中状态设置用户权限功能 1 安装环境 1&#xff09;Python环境安装PyQt5、PyQt-sip、PyQt5Designer、PyQt5-tools 2&…

【搜索】BFS中的最短路模型

算法提高课笔记 目录 单源最短路迷宫问题题意思路代码 武士风度的牛题意思路代码 抓住那头牛题意思路代码 多源最短路矩阵距离题意思路代码 双端队列BFS电路维修题意思路代码&#xff08;加了注释&#xff09; BFS可以解决边权为1的最短路问题&#xff0c;下面是相关例题 单源…

Mybatis 知识点

Mybatis 知识点 1.1 Mybatis 简介 1.1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架支持定制化 SQL、存储过程及高级映射Mybatis 几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO…