rsync远程同步(rsync+inotify)

目录

一、概述

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.rhkb.cn/news/194406.html

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

相关文章

趣学python编程 (一、计算机基础知识科普)

未来是高度科技化和智能化的时代。过去不识字的叫“文盲”,如今不懂点计算机知识,则可能是新时代的“文盲”。不论从事什么行业,了解下计算机和编程都是有益的。Python 连续多年占据最受欢迎的编程语言榜首,未来Python有机会成为像…

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…

08【保姆级】-GO语言的函数、包、错误处理

08【保姆级】-GO语言的函数、包、错误处理 一、 函数基本介绍1.1 基本概念1.2 包的概念1.3 包使用的注意事项和细节1.4 函数的调用机制1.5 函数的递归调用1.6 函数使用的注意事项和细节讨论1.7 init函数1.8 匿名函数1.8.1 匿名函数使用方式1.8.2 全局匿名函数 1.9 闭包1.9.1 闭…

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

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

Mac电脑VSCode配置PHP开发环境

1.安装 PHP 首先,打开终端,安装 Homebrew,输入如下命令: $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 安装了 Homebrew 之后,你可以使用下面的…

这款开源神器,让聚类算法从此变得简单易用

Scikit-Learn 以其提供的多个经过验证的聚类算法而著称。尽管如此,其中大多数都是参数化的,并需要设置集群的数量,这是聚类中最大的挑战之一。 通常,使用迭代方法来决定数据的最佳聚类数量,这意味着你需要多次进行聚类…

【华为OD题库-015】报文重排序-Java

题目 对报文进行重传和重排序是常用的可靠性机制&#xff0c;重传缓冲区内有一定数量的子报文&#xff0c;每个子报文在原始报文中的顺序已知&#xff0c;现在需要恢复出原始报文。 输入描述 输入第一行为N,表示子报文的个数&#xff0c;0<N < 1000。 输入第二行为N个子报…

Unity 2021 LTS / Unity 2022 LTS New Shader Graph Node 参考样本

Shader Graph团队很高兴地宣布发布新的节点参考样本&#xff0c;现在可用于2021 LTS, 2022 LTS和未来的版本。 节点参考样本是超过140个Shader图形资源的集合。您可以将这些图用作参考&#xff0c;以了解每个节点的作用及其工作原理&#xff0c;而不是在项目中使用这些图。每个…

【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)

这篇文章&#xff0c;主要介绍Centos系统中安装docker容器&#xff08;华为云HECS云耀服务器&#xff09;。 目录 一、安装docker 1.1、卸载旧版本docker 1.2、更新repo镜像 1.3、安装依赖包 1.4、添加docker-ce镜像 1.5、安装docker-ce 1.6、查看docker安装版本 1.7、…

Opengauss到Oracle增量同步, 使用debezium

一、概述 PG到Oracle的同步方案使用debezium kafka kafka-connect-jdbc。debezium是一款开源的变更捕获软件&#xff0c;它以kafka的connector形式运行&#xff0c;可以捕获PostgreSQL、MySQL、Oracle中的变更数据&#xff0c;保存到kafka。kafka-connect-jdbc是confluent公…

[Linux] ssh远程访问及控制

一、ssh介绍 1.1 SSH简介 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用于实现远程登录、远程复制等功能的字符接口。SSH 协议包括用户在登录时输入的用户密码、双方之间的通信。 加密数据传输&#xff0c;SSH 是一种建立在应用层和传输层上…

Please No More Sigma(构造矩阵)

Please No More Sigma 给f(n)定义如下&#xff1a; f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n&#xff0c;求下式模1e97后的值 Input 第一行一个数字T&#xff0c;表示样例数 以下有T行&#xff0c;每行一个数&#xff0c;表示n。 保证T<100&#xff0c;n<100000…

【Proteus仿真】【Arduino单片机】DHT11温湿度

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DHT11温湿度传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示传感器采集温度和湿度。 二、软件设…

SQL存储过程和函数

SQL存储过程和函数 变量系统变量用户定义变量局部变量 存储过程存储函数 变量 在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。 系统变量 系统变量 是MySQL服务器提供&#xff0c;不是用户定义的&#xff0c;属于服务器层面。分为全局变量&#xff08;GLOBA…

全栈工程师必须要掌握的前端Html技能

作为一名全栈工程师&#xff0c;在日常的工作中&#xff0c;可能更侧重于后端开发&#xff0c;如&#xff1a;C#&#xff0c;Java&#xff0c;SQL &#xff0c;Python等&#xff0c;对前端的知识则不太精通。在一些比较完善的公司或者项目中&#xff0c;一般会搭配前端工程师&a…

Mistral 7B 比Llama 2更好的开源大模型 (二)

Mistral 7B 论文学习 Mistral 7B 论文链接 https://arxiv.org/abs/2310.06825 代码: https://github.com/mistralai/mistral-src 网站: https://mistral.ai/news/announcing-mistral-7b/ 论文摘要 Mistral 7B是一个70亿参数的语言模型,旨在获得卓越的性能和效率。Mistral 7…

C# 使用Microsoft.Office.Interop.Excel库操作Excel

1.在NuGet管理包中搜索&#xff1a;Microsoft.Office.Interop.Excel&#xff0c;如下图红色标记处所示&#xff0c;进行安装 2. 安装完成后&#xff0c;在程序中引入命名空间如下所示&#xff1a; using Microsoft.Office.Interop.Excel; //第一步 添加excel第三方库 usi…

算法笔记-贪心1

算法笔记-贪心 什么是贪心算法分配饼干例题理解二分割字符串最优装箱整数配对最大组合整数分配区间问题买股票的最佳时机区间选点 问题什么是贪心算法 分配饼干例题 //贪心算法 //保证局部最优,从而使最后得到的结果是全局最优的 #include<iostream> #include<a…

VIVADO+FPGA调试记录

vivadoFPGA调试记录 vitis编译vivado导出的硬件平台&#xff0c;提示xxxx.h file cant findVITIS内定义的头文件找不到 vitis编译vivado导出的硬件平台&#xff0c;提示’xxxx.h file cant find’ 此硬件平台中&#xff0c;包含有AXI接口类型的ip。在vitis编译硬件平台时&…

【漏洞复现】maccms苹果cms 命令执行漏洞

漏洞描述 感谢提供更多信息。“苹果CMS” 似乎是指 “Maccms”&#xff0c;这是一款开源的内容管理系统&#xff0c;主要用于搭建视频网站。Maccms 提供了一套完整的解决方案&#xff0c;包括用户管理、视频上传、分类管理、数据统计等功能&#xff0c;使用户能够方便地创建和…