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:给出文件的传输状态

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

索引的创建和设计原则

文章目录 1. 索引的声明与使用1.1 索引的分类1.2 创建索引 2. MySQL8.0索引新特性2.1 支持降序索引2.2 隐藏索引 3 哪些情况适合创建索引?3.1 字段的数值有唯一性的限制3.2 频繁作为 WHERE 查询条件的字段3.3 经常 GROUP BY 和 ORDER BY 的列3.4 UPDATE、DELETE 的 WHERE 条件…

(七)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、五种算法(DBO、LO、SWO、COA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启…

Linux Traefik工具Dashboard结合内网穿透实现远程访问

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务。它支持多种后端 (D…

固有时间尺度分解(Intrinsic Time Decomposition,ITD)

代码教程 固有时间尺度分解(ITD) 代码原理 ITD(Intrinsic Time Decomposition)是一种信号分解方法,用于将信号分解成多个时频组件。它的基本思想是将信号分解为一组原子函数,这些原子函数具有不同的时频特性。 ITD分解的步骤如下…

在微信公众号怎么实现答题活动

微信公众号答题活动:知识就是力量,答题赢取大奖! 你是否厌倦了常规的抽奖活动?是否希望通过更有意义的方式与粉丝互动?现在,微信公众号的全新答题活动来啦!不仅可以增加粉丝的粘性,…

【2023云栖】郭瑞杰:阿里云搜索产品智能化升级

本文根据 2023 云栖大会演讲实录整理而成,演讲信息如下: 演讲人:郭瑞杰 | 阿里云资深技术专家、搜索负责人 演讲主题:阿里云搜索产品智能化升级发布 近日在2023云栖大会上,阿里云搜索负责人郭瑞杰对阿里云搜索产品智…

java的Exception.getMessage为null

之前捕获异常后调用异常的getMessage写日志,日志写的竟然是null,不可思议。发现要调用异常的getCause().getMessage()才能得到异常信息 刻意把密码改错,让异常直达界面,免得有问题时候只能猜

光伏含氟废水吸附处理

#光伏含氟废水吸附处理 氟的来源是冰晶石、萤石、氟磷灰等矿物,在钢铁、有色金属冶炼、铝、玻璃、化肥等工业领域得到广泛应用。 目前,在太阳能板生产中,一项关键工艺就是将氟化氢溶液浸泡在硅片上,以除去表面的磷硅玻璃&#xf…

把GPT知识库当成记事本,非常有趣的玩法,很欢乐!

1. 笔者创建了一个“每天碎碎念”知识库,把重要的事情保存成文件记录,并进行训练。 2. 这样每当我记不清楚的时候 就开始灵魂发问~ 3. GPT最擅长胡编乱造,万一他忽悠我怎么办,别着急。查看“知识原文”就知道他是否忽悠你了。 这…

qnx 工程目录创建工具 addvariant

文章目录 前言一、addvariant 是什么二、addvariant 使用实例1. variant names 参数说明2. 创建一个可执行文件工程3. 创建一个动态库工程 总结参考资料 前言 本文主要介绍如何在qnx 开发环境中创建工程目录及其相关的配置文件(common.mk, Makefile 文件等) 软件版本&#xff…

基于ssm+vue员工工资管理系统

基于ssmvue员工工资管理系统 摘要 随着信息技术的不断发展,各行各业对于高效管理和利用数据的需求也日益增长。员工工资管理系统作为企业管理中的一个重要组成部分,对于实现工资信息的精确计算、及时发放和有效管理具有重要意义。本文基于SSM&#xff08…

云服务器windows service2022 部署git服务器

1 安装 下载地址gitblit 解压到你的一个目录,我这里给的是C:\gitblit 根据官网提示要下载jre or jdk7.0,这里建议使用下载jre (jdk 有时候运行出问题,或者2个都安装),自行安装java,这里不做环境配置的说明 ==================================== 进入c:\gitblit\data 目录里面…

python科研绘图:帕累托图(Pareto chart)

目录 帕累托图基本构成 绘制帕累托图的步骤 帕累托图(Pareto chart)是将出现的质量问题和质量改进项目按照重要程度依次排列而采用的一种图表。以意大利经济学家V.Pareto的名字而命名的。帕累托图又叫排列图、主次图,是按照发生频率大小顺序…

Linux安装RabbitMQ详细教程

一、下载安装包 下载erlang-21.3-1.el7.x86_64.rpm、rabbitmq-server-3.8.8-1.el7.noarch.rpm 二、安装过程 1、解压erlang-21.3-1.el7.x86_64.rpm rpm -ivh erlang-21.3-1.el7.x86_64.rpm2、安装erlang yum install -y erlang3、查看erlang版本号 erl -v4、安装socat …

单链表经典OJ题(四)

目录 1、链表中倒数第k个结点 2、消失的数字 3、轮转数组 4、合并两个有序数组 5、数组串联 6、序列中删除指定数字 1、链表中倒数第k个结点 链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com) 这道题依然利用双指针法,具体解题思路如下: 1…

一阶滤波器(一阶巴特沃斯滤波器)

连续传递函数G(s) 离散传递函数G(z) 转换为差分方程形式 一阶巴特沃斯滤波器Filter Designer参数设计:参考之前的博客Matlab的Filter Designer工具设计二阶低通滤波器 设计采样频率100Hz,截止频率20Hz。 注意:设计参数使用在离散系统中&…

网工内推 | 国企、上市公司售前,CISP/CISSP认证,最高18K*14薪

01 中电福富信息科技有限公司 招聘岗位:售前工程师(安全) 职责描述: 1、对行业、用户需求、竞争对手等方面提出分析报告,为公司市场方向、产品研发和软件开发提供建议; 2、负责项目售前跟踪、技术支持、需…

java学习part04

1.进制 计算机底层都是二进制,输出统一十进制 2.算符 3.逻辑算符 4.位运算符 38-变量与运算符-位运算符的使用_哔哩哔哩_bilibili 5.条件运算符

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

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

洛谷 P3128 [USACO15DEC] Max Flow P

题目链接:P3128 [USACO15DEC] Max Flow P - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 读题注意 从隔间s运输到隔间t,和从隔间t运输到隔间s,都没区别,因为加的压力是一样的,所以这是一个无向图。 并且只有N个节点…