rsync远程同步工具的使用

文章目录

  • rsync远程同步
    • rsync同步方式
    • 备份过程
    • 配置rsync服务器(下行同步)
      • rsync 命令的使用方法
    • 配置上行同步(依赖inotify可以实时备份)

rsync远程同步

rsync是一个开放源代码的文件同步工具,它可以同步文件和目录,支持本地和远程同步。rsync通过比较源文件和目标文件的差异来实现同步,只有差异部分会被传输,这使得同步效率非常高。
以下是rsync远程同步的一些关键特点:

  1. 高效的数据传输:rsync通过比较文件差异来传输数据,只有差异部分会被传输,这使得同步效率非常高。
  2. 支持多种传输协议:rsync支持多种传输协议,包括SSH、rsh、sftp等,这使得它可以在不同的操作系统之间进行同步。
  3. 目录同步:rsync可以同步整个目录结构,包括子目录和文件。
  4. 镜像同步:rsync可以实现源目录和目标目录的镜像同步,确保两个目录的内容完全一致。
  5. 支持排除和包含:rsync允许用户指定排除或包含的文件或目录,以控制同步的范围。
  6. 可配置性:rsync有丰富的配置选项,用户可以根据需要调整同步策略。
  7. 安全性:rsync支持通过SSH进行加密传输,确保数据传输的安全性。
  8. 版本控制:rsync支持通过–archive选项来实现文件的版本控制。
    要使用rsync进行远程同步,您需要配置一个rsyncd.conf配置文件,并指定远程服务器的地址、端口、用户名、密码等参数。然后,在客户端使用rsync命令来同步文件和目录。

rsync同步方式

  1. 完整备份
    每次备份都是将源文件系统中所有文件和目录的当前状态完全复制到目标文件系统中。如果目标文件系统中已经存在与源文件系统中相同的文件,rsync会比较文件差异,只传输差异部分,以提高同步效率。
  2. 差量备份
    差量备份是相对于上一次的完整备份来说的。它会记录自上一次完整备份以来,源文件系统中所有发生变化的数据。这意味着差量备份不包括那些在上一次完整备份后未发生变化的文件。
  3. 增量备份
    增量备份是相对于上一次备份(无论是完整备份还是差量备份)来说的。它会记录自上一次备份以来,源文件系统中所有发生变化的数据。与差量备份不同,增量备份不会清除存档属性,它只是记录变化的数据。

备份过程

  1. 发起端(客户端)
    发起端是负责发起同步操作的客户机。它告诉服务器(备份源)要进行数据同步,并且指定同步的源路径和目标路径。
  2. 备份源(服务端)
    备份源是响应来自发起端的rsync同步操作的服务器。它是需要备份的服务器,负责处理发起端的请求,并将数据同步到指定的目标路径。
  3. 服务端
    服务端是指运行rsyncd服务的主机,它监听来自客户端的同步请求,并根据配置文件rsyncd.conf执行相应的同步操作。
  4. 客户端
    客户端是指存放备份数据的主机。它接收来自服务端的同步数据,并将其存储在指定的路径中。

在rsync备份过程中,发起端和服务端之间的通信是加密的,确保了数据传输的安全性。而客户端则负责存储同步后的数据,以实现数据的备份和保护。

配置rsync服务器(下行同步)

源服务器(192.168.20.10)配置

mkdir /bak
vim /etc/rsyncd.conf				#添加以下配置项
uid = root
gid = root
use chroot = yes										#禁锢在源目录
address = 192.168.80.10									#监听地址
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 = 192.168.20.0/24							#允许访问的客户机地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z		#同步时不再压缩的文件类型[bak]												#共享模块名称
path = /bak									#源目录的实际路径
comment = Document Root of www.kgc.com
read only = yes											#是否为只读
auth users = bak									#授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db						#存放账户信息的数据文件

在这里插入图片描述
为备份账户创建数据文件

vim /etc/rsyncd_users.db
bak:123123

权限必须是600否则报错!

chmod 600 /etc/rsyncd_users.db

保证所有用户对bak目录都有可读权限

chmod +r /bak

在这里插入图片描述
创建100个测试文件

touch {1..100}

在这里插入图片描述
用户端(192.168.20.20)

rsync -avz bak@192.168.20.10::bak /opt

在这里插入图片描述
备份成功

rsync 命令的使用方法

rsync 选项       用户@ip地址::共享模块名称    拷贝到的目录
例如 rsync -avz bak@192.168.20.10::bak /opt 选项有
-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-z:在传输文件时进行压缩(compress)。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件
--password-file=/etc/server.pass:免密登录/etc/server.pass是你选项密码的配置文件

免密选项密码只需要填入文件就行了
在这里插入图片描述
免密交互选项可以设置crontab -e 用来自动备份

配置上行同步(依赖inotify可以实时备份)

服务端配置
在服务端修改/etc/rsyncd.conf
将只读修改成no,改成可读可写
在这里插入图片描述
重启rsync服务

ps aux | grep rsync
kill 61095
rsync --daemon

在这里插入图片描述
客户端配置
调整内核参数

vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p

在这里插入图片描述

  1. fs.inotify.max_queued_events:
    • 含义:这个参数设置了 inotify 事件队列的最大长度。如果一个事件队列满了,新的事件将会被丢弃,但是会触发 IN_Q_OVERFLOW 事件,这样可以通知用户应用程序事件队列已满。
    • 默认值:16384
    • 解释:这意味着 inotify 队列可以存储最多 16384 个事件,超过这个数量的事件将会被丢弃。
  2. fs.inotify.max_user_instances:
    • 含义:这个参数限制了每个用户可以创建的 inotify 实例的最大数量。
    • 默认值:1024
    • 解释:每个用户最多可以创建 1024 个 inotify 实例。每个实例可以监控不同的文件或目录。
  3. fs.inotify.max_user_watches:
    • 含义:这个参数限制了每个用户可以监控的文件或目录的总数。
    • 默认值:1048576
    • 解释:每个用户可以监控最多 1048576 个文件或目录。如果超出这个限制,将会收到一个错误。

安装inotify服务

cd /opt
tar zxvf inotify-tools-3.14.tar.gz -C /opt/
cd /opt/inotify-tools-3.14
./configure
make && make installinotifywait -mrq -e modify,create,move,delete /bak

vim bak.sh
写一个触发脚本

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /bak"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /bak bak@192.168.20.10::bak/"
#使用while、read持续获取监控结果,根据结果可以作进一步判断是否读取到输出的监控记录
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
doif [ $(pgrep rsync | wc -l) -le 0 ] ; then#如果rsync未在执行,则立即启动$RSYNC_CMDfi
#  echo "At ${DATE}${TIME}, file ${FILE} was changed in${DIR}"
done

检测
在这里插入图片描述
在这里插入图片描述
同步成功

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

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

相关文章

Chatgpt掘金之旅—有爱AI商业实战篇|内容策展业务|(八)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、AI技术创业内容策展业务有哪些机会? 人工智能(AI)技术作为当今科技创新的前沿领域,为创业者提供了广阔的机会和挑战。随着…

【CTF】rip--堆栈的简单认识

前言 最近在学二进制,准备拿BUUCTF的pwn试试手,还在摸索的阶段,有什么思路出错的地方还请指出。 解题思路 下载文件到kali,查看文件为 64-bit的ELF(ELF为Linux下的可执行文件,相当于Windows的exe&#xff0…

【Angular】什么是Angular中的APP_BASE_HREF

1 概述: 在这篇文章中,我们将看到Angular 10中的APP_BASE_HREF是什么以及如何使用它。 APP_BASE_HREF为当前页面的基础href返回一个预定义的DI标记。 APP_BASE_HREF是应该被保留的URL前缀。 2 语法: provide: APP_BASE_HREF, useValue: /gfgapp3 步骤: 在app.m…

Android Telephony框架

目录 一、简介二、应用层(Application)三、框架层(Framework)四、本地 RIL 层(RIL)五、驱动层(Modem)六、整体框架 一、简介 无论手机发展到如何智能的程度,最关键和重要的功能仍然是通讯,具体来说就是打电话、发短信、上网功能的使用。而整个 Android …

uniapp vue2 时钟 循环定时器

效果展示: 时钟 写在前面:vue2有this指向,没有箭头函数 实验操作:封装一个时钟组件 uniapp vue2 封装一个时钟组件 核心代码: this指向的错误代码,在下: start() { this.myTimer setInterval(…

分公司=-部门--组合模式

1.1 分公司不就是一部门吗? "我们公司最近接了一个项目,是为一家在全国许多城市都有分销机构的大公司做办公管理系统,总部有人力资源、财务、运营等部门。" "这是很常见的OA系统,需求分析好的话&#xff0…

【SpringCloud】Nacos 配置管理

目 录 一.统一配置管理1. 在 nacos 中添加配置文件2. 从微服务拉取配置 二.配置热更新1. 方式一2. 方式二 三.配置共享1. 添加一个环境共享配置2. 在 user-service 中读取共享配置3. 运行两个 UserApplication,使用不同的 profile4. 配置共享的优先级5. 多服务共享配…

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候,我们⼀般会选择如下三种数据结构。 数组set (集合)map(映射) 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候,就要考虑哈希法。如果在做⾯试题⽬的时候…

【测试面试题】14题常见APP测试面试题(参考答案)

大家好,这份面试题不难,都是一些基础题。 先上一个面试题汇总图,建议大家可以先思考下如果是自己能不能回答全,再去对照看参考答案。 下面为参考答案: 一、基础篇 1、APP的测试流程? APP测试流程与web测…

什么是并行通信、串行通信?什么是全双工、半双工、单工? 什么是异步通信、同步通信? 什么是RS232、RS485?什么是pwm?

这篇文章主要讲一下单片机中的通信相关的内容 主要讲一下以下5个问题: 1.什么是并行通信、串行通信? 2.什么是全双工、半双工、单工? 3.什么是异步通信、同步通信? 4.什么是RS232、RS485? 5.什么是pwm?什…

初识CSS

目录 前言: CSS的介绍: CSS的发展: 1)CSS1.0: 2)CSS2.0: 3)CSS2.1: 4)CSS3: CSS特点: 1)丰富的样式定义: 2)易于设置和修改: 3&…

网络电视盒子哪个品牌好?2024畅销电视盒子排行榜

电视盒子的品牌和产品非常多,让新手在选购时难度增大,大部分消费者在此时会选择参考销量排名情况,小编这次结合各个电商平台的销量和用户评价整理了电视盒子排行榜,想买电视盒子不知道网络电视盒子哪个品牌好可以收藏。 TOP 1.泰捷…

前端开发之Element树结构组件el-input的type=“password“时候账号密码自动填充解决方案

Element树结构组件el-input的type“password“时候账号密码自动填充解决方案 前言效果图解决方案 前言 在使用element的input的password当参数和login的参数相同时,在浏览器保存的用户名密码会自动填充,导致input附加上默认值 使用场景一般是在用户管理…

K8s学习八(配置与存储_配置)

配置与存储 配置管理 ConfigMap ConfigMap的创建 一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。configmap缩写为cmkubectl create cm -h来查看创建命令…

物联网实战--驱动篇之(四)LoRa应用(modbus)

目录 一、前言 二、板级收发 三、主机请求 四、从机接收及回复 五、主机接收 一、前言 之前两篇分别介绍了modbus和sx1278的驱动,但是都并未具体讲解如何应用,那么这一篇就把两者结合起来,做个小demo,便于理解这两个驱动的使…

测试开发面经(Flask,轻量级Web框架)

1. Flask的核心特点 a. 轻量级:核心简洁,只提供了基本的功能,其他高级功能可以通过插件或扩展来添加。 b. 灵活性:允许开发者选择适合自己项目的组件和工具,没有强制的项目结构和设计模式。 c. 易于扩展:提…

蓝桥杯刷题-09-三国游戏-贪心⭐⭐⭐

蓝桥杯2023年第十四届省赛真题-三国游戏 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y,…

并发 ---- 多线程原理及底层实现

并发现象遍布日常生活,我们时常接触:我们可以边走路边说话;或者,左右手同时做出不一样的动作。在计算机应用程序中也有很好的例子: 浏览器 - 浏览器可以同时下载任意数量的文件和打开多个网页,下载时仍允许…

【Linux】进程控制之进程程序替换

目录 前言 替换的原理 替换函数 记忆技巧 函数使用 execl execlp execv execvp execle execvpe 调用其它语言的程序 模拟实现一个shell 前言 关于本文可以先去看看上一篇【Linux】进程控制详解-CSDN博客可以更好的理解这里的内容 学完本篇文章,你就…

AI智能分析盒子在工地的应用,提高工地管理效率和安全性

工地ai智能分析盒子是一种基于人工智能视觉分析技术的人工智能盒子,旨在提升工地作业区域的管理效率和保障作业人员的安全。通过最前沿的AI视觉算法、大数据,能够实时监控工地现场视频流画面,对施工工地人员的工作着装及日常作业行为进行规范…