rsync远程同步(rsync+inotify)

news2024/11/25 21:27:11

目录

一、概述

1、关于rsync

2、rsync的特点:

3、备份方式:

4、同步方式:

二、rsync相关命令

1、rsync常用命令的选项:

2、启动和关闭rsync服务:

3、关闭 rsync 服务

三、 免交互:

1、免密同步:

2、定期同步:

四、inotify工具:

1、发送端安装inotify工具:

2、inotify 内核参数

3、设置监控实例和实例文件修改:

4、inotify命令:

五、实验:

1、下行同步:

2、上行同步:

3、使用rsync快速删除大量文件


一、概述

1、关于rsync

rsync远程同步:是开源的快速备份工具。可以在不同主机之间同步整个目录

在远程同步任务重,一个是源端,还有一个是发起端(客户端)

源端负责文件的原始位置,发起端和源端的文件同步

2、rsync的特点:

拷贝文件,链接文件,设备

可以保持源文件或者目录的权限不变(时间、软硬连接、所有者、所在组等均可以保持不变)

可以实现增量同步。只同步发生变化的数据,数据传输效率很高

支持匿名认证。

3、备份方式:

完整备份,第一次同步都是完整的备份

往后的同步,都是增量备份(差异备份)。只同步变化的数据

4、同步方式:

下行同步:

从源端同步到客户端

上行同步:

从客户端同步到源端

二、rsync相关命令

1、rsync常用命令的选项:

rsync -r:递归模式,目录包含子目录里面的所有文件

rsync -l:复制链接文件,软链接

rsync -v:显示同步过程中的详细信息

rsync -z:传输文件时进行压缩

rsync -a:归档模式,可以保留文件的权限、属性等等

rsync -p:保留文件的权限标记(所有者和所在组)

rsync -t:保留时间标记(时间戳)

rsync -g:保留文件的所在组(管理员)

rsync -o:保留文件的所有者(管理员)

rsync -H:保留硬链接

rsync -D:保留设备文件和其他特殊文件

rsync --delete:删除目标位置有,但是原始文件没有的文件(相同的数据不作操作)

2、启动和关闭rsync服务:

启动 rsync 服务,以独立监听服务的方式(守护进程)运行

rsync --daemon

3、关闭 rsync 服务

kill $(cat /var/run/rsyncd.pid)

rm -rf /var/run/rsyncd.pid

三、 免交互:

1、免密同步:

echo "123456" > /etc/server.pass

chmod 600 /etc/server.pass

rsync -avz --password-file=/etc/server.pass backuper@20.0.0.21::test /opt/

2、定期同步:

举个例子

crontab -e

30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.80.10::wwwroot /opt/

为了在同步过程中不用输入密码,需要创建一个密码文件,保存 backuper 用户的密码,如 /etc/server.pass。

#在执行 rsync 同步时使用选项 “--password-file=/etc/server.pass” 指定即可。

systemctl restart crond

systemctl enable crond

四、inotify工具:

1、发送端安装inotify工具:

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

cd /opt/inotify-tools-3.14

./configure

make -j2 && make install

2、inotify 内核参数

在Linux内核中,默认的inotify机制提供了三个调控参数

1)max_queue_events(监控事件队列,默认值为16384)

2)max_user_instances(最多监控实例数,默认值为128)

3)max_user_watches(每个实例最多监控文件数,默认值为8192)

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

cat /proc/sys/fs/inotify/max_queued_events

cat /proc/sys/fs/inotify/max_user_instances

cat /proc/sys/fs/inotify/max_user_watches

3、设置监控实例和实例文件修改:

vim /etc/sysctl.conf

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 1048576

rsync同步速度很快,适合同步大文件,可以结合数据库同步使用

inotify:通知接口,可以用来监控文件系统的各种变化情况,文件存取,删除移动修改,都可以被监控

inotify机制和rsync配置在一块使用。既可以通知变化,也可以实现同步。

只监控,同步是rsync

4、inotify命令:

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

-m:持续监控

-r:递归整个目录

-q:信息提示

-e:指定监控的事件,多个事件用逗号隔开

五、实验:

架构:

test1 源端 20.0.0.21

test2 发起端(客户端) 20.0.0.22

 关防火墙安全机制

systemctl stop firewalld

setenforce 0

查看安装情况:

rpm -q rsync

rsync是linux自带的软件

rpm -qc rsync

1、下行同步:

下行同步的格式:

rsync [选项] 源服务器位置 本地位置

举个例子

格式一:

rsync -avz test@192.168.2.102::message /opt/

格式二:

rsync -avz rsync://test@192.168.2.102/message /opt/

test为配置文件中的授权账户

IP地址为同步源地址

message 为配置文件中定义的共享模块


 

配置源端rsync:

改配置文件:

vim /etc/rsyncd.conf #添加以下配置项

uid = root

gid = root

use chroot = yes #禁锢在源目录

address = 20.0.0.21 #监听地址

port = 873

#监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看

log file = /var/log/rsyncd.log #日志文件位置

pid file = /var/run/rsyncd.pid #存放进程 ID 的文件位置

hosts allow = 20.0.0.0/24 #允许访问的客户机地址

dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型

[test] #共享模块名称

path = /opt/test #源目录的实际路径

comment = test

write only = yes #是否为只读

auth users = backuper #授权账户,多个账号以空格分隔

secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件

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

#为备份账户创建数据文件

给授权账户添加密码

vim /etc/rsyncd_users.db

backuper:123456 #无须建立同名系统用户

设置只有文件的所有者可以读取和修改密码文件

chmod 600 /etc/rsyncd_users.db

保证所有用户对源目录/data都有读取权限

mkdir /opt/test

chmod 777 /opt/test

启动 rsync 服务,以独立监听服务的方式(守护进程)运行

rsync --daemon

观察是否启动成功

ss -napt | grep rsync

服务端同步数据到客户端:

rsync -avz backuper@20.0.0.21::test /opt

-avz:保留文件权限 v显示详细过程 z同步过程中对文件进行压缩

20.0.0.21::test

往后的同步都是增量同步,只有新增的才会同步

rsync -avz backuper@20.0.0.21::test /opt

2、上行同步:

将发起端(客户端)修改,更新到源端

还是在客户端执行命令:

rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@20.0.0.21::test/

将监控和同步一起执行

脚本:

vim inotify.sh

#!/bin/bash

CMD="inotifywait -mrq -e modify,create,move,delete /opt/data"

rsync_cmd="rsync -azH --delete --password-file=/etc/server.pass /opt/data backuper@20.0.0.21::test/"

$CMD | while read DIRECTORY EVENT FILE

do

if [ $(pgrep rsync | wc -l) -gt 0 ]

then

 $reync_cmd

fi

done

也可以设置定时任务

3、使用rsync快速删除大量文件

在文件数量较多的情况下,比如百万和千万级别的文件,rm -rf *速度很慢

rsync 可以实现大量删除

此时,利用rsync的替换原理,结合--delete选项,可以实现快速删除大量文件,比如服务的缓存

现在主机模拟生成大量垃圾文件:

mkdir test1

cd test1/

touch {1..9999}.txt

touch demo.txt

#demo.txt用作测试

再创建一个空文件

mkdir test2

cd test2

touch demo.txt

进行同步删除

rsync --delete-before -avH --progress --stats /opt/test2/ /opt/test1

--delete-before:在传输的过程中进行删除

-a:归档模式

-H:硬链接

-v:输出信息

--progress:显示传输的过程

--stats:给出文件的传输状态

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

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

相关文章

Java_实现图书管理系统

目录 前言 框架核心思想 框架的实现 书类和书架类的实现 功能接口实现 功能的声明 父类用户和子类管理员,子类普通用户 Main方法 前言 java图书管理系统的详细解析;从思考到实现,一步步带你学会图书管理系统. 框架核心思想 下图只是一个图书管理系统的初步…

历年国自然标书申请 面上项目614份 2001-2019年 面上标书

这里列举几例 清华任丰原 哈尔滨 杨宝峰 # 关注微信:生信小博士,10元领取 关注微信之后, 点开付费合集即可领取

Strus2 系列漏洞

目录 1、S2-001 2、S2-005 3、S2-007 4、S2-008 5、S2-009 6、S2-012 7、S2-013/S2-014 8、S2-015 9、S2-016 10、S2-019 11、s2-032 12、S2-045 13、S2-048 14、S2-052 15、S2-053 16、S2-057 17、S2-devMode Strusts 中使用 OGNL 为表达式语言。OGNL(Object…

OpenAI 开发者大会2023 解读

概述 宏观上还是分成两点:新的底层模型GPT-4 Turbo、新的应用生态GPTs。其余的名词都是服务于上面两个,很多名词是面向开发者的(非普通用户,主要是在页面上使用)容易导致混淆,比如什么JSON 格式、函数调…

使用uniapp写小程序,真机调试的时候不显示log

项目场景: 当小程序文件太大的情况下使用真机调试,但是真机调试的调试器没有任何反应 问题描述 使用uniapp写小程序,真机调试的时候不显示log 原因分析: 提示:因为真机调试的时候没有压缩文件,所以调试的…

EtherCAT从站EEPROM分类附加信息详解:SM(同步管理器)

0 工具准备 1.EtherCAT从站EEPROM数据(本文使用DE3E-556步进电机驱动器)1 分类附加信息——SM(同步管理器) 1.1 分类附加信息规范 在EEPROM字64开始的区域存储的是分类附加信息,这里存储了包括设备信息、SM配置、FM…

有向无权图的最短路径

在运筹学领域的经典模型中,最大流问题、多商品网络流问题和最短路径问题等都依附在图上对问题进行描述,同样,当我们梳理问题的数学模型,或理解相关问题的求解算法时,也要依靠它。因此,我将总结和图相关的问…

Android NDK JNI 开发native层崩溃日志栈分析

问题: 在Android的JNI开发中,你是否看到如下一堆崩溃日志,不知如何下手分析问题,崩溃在哪一行? 11-16 17:20:44.844 23077 23077 W test_jni_h: jni_preload: Starting for processln 11-16 17:20:44.844 23077 2307…

AWD比赛中的一些防护思路技巧

## 思路1: 1、改服务器密码 (1)linux:passwd (2)如果是root删除可登录用户:cat /etc/passwd | grep bash userdel -r 用户名 (3)mysql:update mysql.user set…

基于SpringBoot+Vue的二手物品交易平台

基于SpringBootVue的二手物品交易平台的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 详情 管理员界面 摘要 本项目是基于Spring Boot 和 Vue 技术栈构建…

latex简单使用

​​文章目录 公式详解 普通公式公式居中带标号公式上标下标根号分式括号运算符列表 无序列表有序列表插入图片 单图多图排版表格脚注与定理子标题目录与附录 目录附录参考文献字体设置 字体样式 加粗斜体字母大写等线自定义字体字体大小 第一种设置第二种设置第三种设置 页面…

系列六、JVM的内存结构【栈】

一、产生背景 由于跨平台性的设计,Java的指令都是根据栈来设计的,不同平台的CPU架构不同,所以不能设计为基于寄存器的。 二、概述 栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,线程销毁时销毁&…

【PyQt小知识 - 4】:QGroupBox分组框控件 - 边框和标题设置

QGroupBox QGroupBox 是 PyQt 中的一个小部件,用于创建一个带有标题的组框。 可以使用 QGroupBox 将相关控件分组并添加一个标题。 以下是一个使用 QGroupBox 的示例代码(示例一): from PyQt5.QtWidgets import * import sysa…

ERP管理系统:企业升级的秘密武器

ERP管理系统:企业升级的秘密武器 在当今快速发展的商业环境中,企业要想保持竞争力,就必须不断进行自我升级。而在这个过程中,ERP管理系统以其强大的功能和优化流程的能力,逐渐成为了企业升级的秘密武器。 一、ERP管理…

Unity开发之C#基础-异常处理(Try Catch)

前言 其实本来这章应该将栈和队列的 但是后来想想 栈和队列在实际应用很少跟多的是大家了解一下栈和队列的基本常识比如先进先出的是谁后进先出的是谁这种 csdn有很多介绍栈和队列的文章 我觉得都比我理解深刻所以大家可以去搜索参照一下 今天我们继续往下讲解 如何自己主动的…

【Java 进阶篇】JQuery 遍历 —— For 循环的奇妙之旅

在前端开发的世界里,遍历是一个常见而重要的操作。它让我们能够浏览并操纵文档中的元素,为用户提供更加丰富和交互性的体验。而在 JQuery 中,遍历的方式多种多样,其中 for 循环是一种简单而灵活的选择。在本篇博客中,我…

11-Vue基础之组件通信(二)

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。 🎅**学习目标: 坚持每一次的学习打卡 文章…

Freeswitch中mod_commonds

mod_commands Table of Contents (click to expand) 0. About1. Usage 1.1 CLI1.2 API/Event Interfaces1.3 Scripting Interfaces1.4 From the Dialplan2. Format of returned data3. Core Commands 3.1 acl  3.1.1 Syntax3.1.2 Examples3.2 alias 3.2.1 Syntax3.2.2…

作为HR是看重学历还是工作经验?

作为HR是看重学历还是工作经验? 这个没有绝对的统一的看法,如果我是HR我更看重工作经验,如果是中小企业,对于人才嘛,那肯定是要到岗就能干活的,底子好不好先不说,关键是要能干活的。 不过近些…

【算法基础】分解质因数

文章目录 什么是分解质因数具体案例输入格式输出格式数据范围 原理讲解原始方法转换思路利用试除法判定质数的思路为什么不需要单独判断是否为质数 什么是分解质因数 分解质因数是指将一个合数用质因数相乘的形式表示出来,即将一个合数分解为若干个质数的乘积。其中…