当前位置: 首页 > news >正文

Rsync数据同步工具

一、什么是Rsync

        Rsync是一款开源的,快速的,多功能的,可实现全量及增量(差异化备份)的本地或远程数据同步备份的优秀工具。

        Rsync软件适用于Unix、Linux、Windows等多种操作系统。

(1)可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。

(2)rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,

(3)利用rsync还可以实现删除文件和目录的功能。相当于rm

(4)rsync相当于scp,cp.rm但是还优于他们每一个命令。

        在同步备份数据时,默认情况下rsync通过独特的“quick check” 算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以是根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据。

        Rsync特性

        1.能更新整个目录树和文件系统;

        2. 有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;

        3. 传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

        4. 能用rsh、ssh 或直接端口做为传输端口;

        5. 支持匿名rsync 同步文件,是理想的镜像工具;

        Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。

        在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。

二、Rsync远程同步

        1.下行同步

        (1)实验环境

虚拟机版本VMware® Workstation 16 Pro 16.2.4 build-20089737
镜像版本CentOS-7-x86_64-DVD-1708.iso
rsync版本rsync-3.1.2-12.el7_9.x86_64
源服务器地址192.168.254.106/24
客户机地址192.168.254.107/24

        (2)实验要求

        通过配置Rsync远程同步来完成下行同步

        (3)实验配置

服务端配置

关闭防火墙

systemctl stop firewalld  

setenforce 0

查看rsync服务

rpm -q rsync  #一般已默认安装rsync

修改/etc/rsyncd.conf 配置文件

uid = root

gid = root

use chroot = yes                                   //禁锢在源目录

address = 192.168.254.106                 //监听地址

port 873                                                //监听端口

log file = /var/log/rsyncd.log                 //指定日志文件

pid file = /var/run/rsyncd.log                //指定存放进程id的文件

host allow = 192.168.254.0/24            //指定客户机网段

dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2        //以下文件格式传输时不再压缩

 

[myhtml]                                                                //共享模块名称
path = /var/www/html                                            //备份源数据路径
comment = this is rsync of www.wcy.com             //备注信息
read only = yes                                                     //设置客户端只读
auth users = lisi                                                     //授权用户名字
secrets file = /etc/rsyncd_users.d                         //存放授权用户的信息文件路径

#如采取匿名的方式,只要将其中的“auth users” 和 “secrets file” 配置项去掉即可。

 保证所有用户对源数据目录/var/www/html都有读取权限

vim /etc/rsyncd_users.db                                       //创建数据文件,输入用户和密码

chmod 600 /etc/rsyncd_users.db                           //更改文件权限

lisi:123456

 

rsync --deamon                                                //启动服务

#关闭rsync服务

kill $(cat /var/run/rsyncd.pid) 
rm -rf /var/run/rsyncd.pid

 客户端配置

rsync -avz lisi@192.168.254.106::test /opt/                        //进行测试

格式
rsync   [选项]    原始位置    目标位置

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

同步备份源

格式一:用户名@ip::共享模块名    
rsync -avz  backuper@192.168.247.99::myhtml /opt/ky/
格式二:rsync://用户名@IP/共享模块名 
rsync -avz rsync://backuper@192.168.247.99/myhtml /opt/ky/

rsync -avz -e 'ssh -p ssh端口号'   原始位置    目标位置

rsync -avz -e 'ssh -p 22'  root@192.168.247.99:/var/www.html/ /opt/ky/

服务端放入文件 

客户端进行接收

免交互

 在客户端创建密码文件,密码文件权限必须为600,除了属主,其他人都没有查看权限

 使用 --password-file命令

 可以看出不需要密码了

还可以使用crontab -e  命令设置定时同步

2.Rsync上行同步(实时同步)

定期同步的不足

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

实时同步的优点

  • 一旦同步源出现变化,立即启动备份
  • 只要同步源无变化,则不执行备份

Linux内核的inotify机制

  • 从版本2.6.13开始提供
  • 可以监控文件系统的变动情况,并做出通知响应
  • 辅助软件:inotify-tools

发起端配置rsnc+inotify

        使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

        将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。

配置rsync上行同步

        (1)实验环境

虚拟机版本VMware® Workstation 16 Pro 16.2.4 build-20089737
镜像版本CentOS-7-x86_64-DVD-1708.iso
rsync版本rsync-3.1.2-12.el7_9.x86_64
源服务器地址192.168.254.106/24
客户机地址192.168.254.107/24

        (2)实验要求

        通过配置Rsync远程同步来完成上传同步

        (3)实验配置

服务端配置

修改rsync源服务器配置文件

vim /etc/rsyncd.conf

重启服务后修改目录权限 

2、调整inotify内核参数

  • max_queue_events:监控事件队列大小(默认值为16384)
  • max_user_instances:最多监控实例数(默认值为128)
  • max_user_watches:每个实例最多监控文件数(默认值为8192)

当要监控的目录、文件数量较大或者变化较为频繁时,建议加大这三个参数的值

vim /etc/sysctl.conf                                                        //通过修改配置文件更改参数

使用sysctl -p 检查

3、安装inotify-tools

        用inotify 机制还需要安装inotify-tools, 以便提供inotifywait、 inotifywatch 辅助工具程序,用来监控、汇总改动情况。

  •         inotifywait:可监控modify (修改)、create (创建)、move (移动)、delete (删除)、attrib ( 属性更改)等各种事件,一有变动立即输出结果。
  •         inotifywatch:可用来收集文件系统变动情况,并在运行结束后输出汇总的变化情况。

解压缩安装包

 tar zxvf inotify-tools-3.14.tar.gz -C /opt/

编译安装

./configure

make && make install

        执行inotifywait命令,然后开启另一个新终端向/opt/kgc目录下添加文件、移动文件,在原来的终端中跟踪屏幕输出结果。

 inotifywait -mrq -e modify,create,move,delete /opt/kgc

 

选项

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

         在发起端,编写触发式同步脚本

        在另外一个终端编写触发式同步脚本(注意,脚本名不可包含 rsync 字符串,否则脚本可能不生效)。

 加上权限加入开机自启

后台运行脚本

3、如何使用rsync工具删除大量文件

1.实验环境

虚拟机版本

VMware® Workstation 16 Pro 16.2.4 build-20089737

镜像版本

CentOS-7-x86_64-DVD-1708.iso

rsync版本

rsync-3.1.2-12.el7_9.x86_64

主服务器地址

192.168.254.106/24

2.实验要求

通过使用rsync工具删除文件夹内的大量数据

3.实验具体配置

Rpm -q rsync                                   //检查rsync是否安装

mkdir /home/empty                         //创建空文件夹

mkdir /home/full

touch file.{1..1000}                            //创建含有大量文件的文件夹

rsync --delete-before -avH --progress --stats /home/empty/ /home/full/

rsync --delete-before接收者在接收者在传输进行删除操作
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
--progress 在传输时显示传输过程
--stats 给出某些文件的传输状态

/home/empty/     指定空文件夹位置

/home/full/           指定要删除文件夹位置

相关文章:

Rsync数据同步工具

一、什么是Rsync Rsync是一款开源的,快速的,多功能的,可实现全量及增量(差异化备份)的本地或远程数据同步备份的优秀工具。 Rsync软件适用于Unix、Linux、Windows等多种操作系统。 (1)可使本地…...

redux小结

store.dispatch(action对象) 在 dispatch 中调用 action 方法返回 action 对象 // /actions/index.js /*** Action:* action本质上是一个 JS 对象;* 必须要包含 type 属性,否则会报错;* 只描述了有事情要发生&#xff0c…...

【Python】【进阶篇】十、Pygame的Font文本和字体

目录十、Pygame的Font文本和字体10.1 font.SysFont()10.2 font.Font()10.3 字体对象方法十、Pygame的Font文本和字体 Pygame 通过pygame.font模块来创建一个字体对象,从而实现绘制文本的目的。 该模块的常用方法如下所示: 名称说明pygame.font.init()初…...

【从零开始学习 UVM】10.8、UVM TLM —— UVM TLM Example

文章目录 subComp1subComp2ComponentAsubComp3ComponentBTop Env/Test这个 UVM TLM 示例使用之前文章中讨论的 put 端口、TLM FIFO 和 get 端口来构建一个具有不同层次的 TLM 端口的测试台。 下面定义了一个名为Packet的类,作为从一个组件传输到另一个组件的数据项。这个类对象…...

获取自己所上传资源的下载量

import requestsurl = https://download-console-api.csdn.net/v1/user/sources/getUploadListByUserName?status=2&pageNum=1&pageSize=100 cookie = # 这里填自己的cookie header = {"authority": "download-console-api.csdn.net","met…...

Aspose.cells模板导出使用记录

简述 用Aspose.cells导出可以方便地将数据到Excel文档中,简单的直接将DataTable列表写入即可,复杂的格式一般会先做好模板,再将数据填充进去,这样可以保持设置好的样式,又能快速填充内容,十分方便。 智能…...

AcWing——糖果传递

有 n个小朋友坐成一圈,每人有 a[i]个糖果。 每人只能给左右两人传递糖果。 每人每次传递一个糖果代价为 1。 求使所有人获得均等糖果的最小代价。 输入格式 第一行输入一个正整数 n,表示小朋友的个数。 接下来 n 行,每行一个整数 a[i]&…...

Redis中的单线程模型

文章目录 文件事件处理器模型Redis的客户端与服务端的交互过程图Redis基于Reactor模式开发了自己的网络事件处理器,称之为 文件事件处理器(File Event Hanlder)。 文件事件处理器由Socket、IO多路复用程序文件事件分派器(dispather)事件处理器(handler)文件事件处理器模型 IO…...

Python函数默认参数设置(超级详细)

我们知道,在调用函数时如果不指定某个参数,Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默…...

人工智能如何赋能业务创新?安克创新有话要说

对于一家企业来说,应该如何运用人工智能技术助力业务创新?作为一家多年复合增长率超过35%的企业,安克创新对这个话题无疑有着深切的体验感悟。飞速成长的消费电子企业众所周知,当下各行各业都在如火如荼地开展人工智能应用&#x…...

如何学习与学习的本质

如何学习两种模式两种记忆方式拖延问题学习方法学习本质两种模式 专注模式发散模式 专注模式和发散模式可以进行切换,提高效率, 发散模式可以后台工作。 两种记忆方式 工作记忆(前额叶皮质)长时记忆(图像比较容易记…...

C++ deque容器

C deque容器 文章目录C deque容器前言1. deque容器基本概念2. deque构造函数3. deque赋值操作4. deque大小操作5. deque 插入和删除6. deque 数据存取7. deque 排序总结前言 本文包含deque容器基本概念、deque构造函数、deque赋值操作、deque大小操作、deque插入和删除、deque…...

HashMap的底层原理

hashmap是一个以key,value形式存储的集合,在JDK1.7中是以数组链表的数据结构,在JDK1.8中是数组链表红黑树的数据结构,他在对数据操作时继承了数组的线性查找和链表的寻址修改 hashmap是线程不安全的 : 在JDK1.7中会造成环形链和数据丢失的情况 在JDK1.8中hashmap的put过程会造…...

Django 4.0文档学习(四)

上篇文章 Django 4.0文档学习(四) 文章目录编写你的第一个 Django 应用,第 6 部分自定义应用的界面和风格编写你的第一个 Django 应用,第 7 部分自定义后台表单自定义后台更改列表自定义后台界面和风格自定义后台主页编写你的第一…...

2023年全国最新高校辅导员精选真题及答案38

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 112.为改变重知识传授轻能力培养的大学课堂,教学方法可以采用(&am…...

和ChatGPT-4聊完后,我觉得一切可能已经来不及了

了然无味,晴空万里!和ChatGPT-4开始了一场坦诚的沟通,它全程都表现出高情商,以及不断尽量安抚我的情绪,而这,恰恰令我脊背发凉。 部分文字截取 ZM:我能不能理解每次对话就是一次你的“生命” G&…...

RocketMQ 5.1 NameServer 启动流程

文章目录1 解析命令行参数和配置文件2 创建并启动 NamesrvController2.1 创建 NamesrvController 对象2.2 启动 NamesrvController 对象第一步:初始化 controller第二步:注册 JVM 钩子第二步:启动 controllerRocketMQ是一个分布式消息中间件&…...

马云回国,首谈ChatGPT

马云今天回国了,这是一个备受关注的消息。 作为中国最具代表性的企业家之一,马云在过去的二十多年里,带领阿里巴巴从一个小小的创业公司,发展成为全球最大的电商平台之一,同时也推动了中国互联网行业的发展。 他的回…...

深入理解C++迭代器:让你的C++代码更加灵活

C迭代器:更加优雅的容器操作方式引言C迭代器简介a. 迭代器的定义b. 迭代器的作用c. 迭代器与指针的区别迭代器分类a. 输入迭代器(Input Iterator)b. 输出迭代器(Output Iterator)c. 前向迭代器(Forward Ite…...

Java 读取Excel模板中的数据到实体类

目录一. 前提条件1.1 需求1.2 分析二. 准备2.1 自定义注解2.2 封装Excel的实体类三. 前台四. Controller层五. Service层💪💪💪六. 效果一. 前提条件 1.1 需求 从指定的Excel模板中读取数据,将读取到的数据存储到数据库中。 1.2…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...