linux学成之路(基础篇)(二十)rsync服务器

目录

前言

一、概述

监听端口

二、特点

快捷

安全

三、数据的同步方式

四、rsync传输方式

本地传输

远程传输

守护进程

五、命令

作为远程命令

作为rsync服务

选项

六、配置文件

全局配置

模块配置

守护进程传输

 七、rsync+inotfy实时同步

一、服务端

二、开发客户端

安装inotify工具 

 配置内核参数


前言

        rsync是一个用于文件同步和备份的开源工具。它可以在本地系统之间或本地与远程系统之间同步和复制文件。rsync使用快速差异算法来确定需要更新的文件部分,以便仅传输已更改的数据,从而提高同步效率。它可以在不同的操作系统之间工作,并支持通过SSH进行安全的远程同步。

        rsync具有灵活的配置选项,可以满足不同的需求。它可以按文件、目录、权限和时间戳等进行过滤,以控制同步的范围。rsync还支持增量备份和部分文件传输,从而减少数据传输量并节省带宽。

        使用rsync,您可以轻松地将文件从一个位置同步到另一个位置,无论是本地的不同目录还是本地与远程服务器之间的同步。它被广泛用于数据备份、网站部署、镜像镜像和远程文件同步等场景。

一、概述

        rsync是linux 下一个远程数据同步工具

        他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输

        会对比两个文件的不同部分,传输差异部分,因此传输速度相当快

        rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝

监听端口

        TCP               873

二、特点

快捷

        第一次传输全部,下一次传输差异
        rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

安全

        可以使用scp、ssh等方式传输
        直接通过socket连接
        支持匿名传输、方便进行网站镜像

三、数据的同步方式

        数据备份:拉取(下载)         pull

        数据恢复:推送(上传)           push

四、rsync传输方式

本地传输

        本地同步数据,类似于cp

远程传输

        远程同步数据,类似于scp

守护进程

        通过模块化的方式实现批量传输

五、命令

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

作为远程命令

        拉取         rsync [OPTION...] [USER@]HOST:SRC... [DEST]
        推送         rsync [OPTION...] SRC... [USER@]HOST:DEST

作为rsync服务

    拉取        rsync [OPTION...] [USER@]HOST::SRC... [DEST]
                   rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
    推送        rsync [OPTION...] SRC... [USER@]HOST::DEST
                   rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

选项

    -a        归档模式,递归并保留对象属性,等同于-rlptgoD
    -v        -verbose           显示同步过程的详细信息
    -z        在传输文件时进行压缩

六、配置文件

全局配置

        address    独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP
        port       指定 rsync 守护进程监听的端口号,默认 873
        pid file     rsync 的守护进程将其 PID 写入指定的文件
        log file     指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
        syslog facility   指定 rsync 发送日志消息给 syslog 时的消息级别
        socket options  指定自定义 TCP 选项
        lockfile   指定rsync的锁文件存放路径
        timeout    超时时间

模块配置

        path       指定当前模块的同步路径,该参数是必须指定的
        comment   给模块指定一个描述
        use chroot           在服务运行时要不要把他锁定在家目录,默认为 true
        uid和gid            指定rsync运行用户和用户组,默认nobody
        max connections      最大并发连接数,0为不限制
        lock file             指定支持 max connections的锁文件。默认/var/run/rsyncd.lock
        list                 指定列出模块列表时,该模块是否被列出。默认为 true
        read only          只读选择,默认true
        write only         只写选择,不让客户端从服务器上下载文件。默认false
        ignore errors     忽略IO错误,默认true
        ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。
        dont compress      用来指定那些在传输之前不进行压缩处理的文件。
        hosts allow  指定哪些主机客户允许连接该模块。默认值为 *
        hosts deny  指定哪些主机客户不允许连接该模块
        auth users    指定用于上传的用户名
        secrets files    指定密码文件

守护进程传输

配置        vim /etc/rsync.conf

                 uid=rsync
                gid=rsync
                fake super=yes     # 用于允许非root用户,在备份目录创建文件

                auth users=rsync_backup  # 用于指定认证用户
                secrets file=/etc/rsync.passwd  # 指定认证用户密码
                read only = false

                ignore errors                          # 屏蔽错误报错

                [backup]
                path=/backup

创建用户            useradd  -s /sbin/nologin -M rsync

创建认证用户的密码         echo 'rsync_backup:123456' >/etc/rsync.passwd
                                            chmod 600 /etc/rsync.passwd

准备模块目录                    mkdir /backup
                                          chown rsync.rsync /backup

重启服务                            systemctl restart rsyncd

 客户端远程传输            rsync -avz /etc/hosts rsync_backup@192.168.100.2::backup

 通过密码文件实现免密传输            vim /etc/rsync.passwd
                                                                123456
                                                    chmod   600 /etc/rsync.passwd
rsync -avz /etc/hosts rsync_backup@192.168.100.2::backup --password-file /etc/rsync.passwd

 七、rsync+inotfy实时同步

一、服务端

        安装网站服务,启动,但是不写首页文件

        修改主配置文件
                uid = root
                gid = root
    [wwwroot]
            path = /var/www/html
            comment = httpd wwwroot
            read only = false
            hosts allow = 192.168.100.0/24

二、开发客户端

安装inotify工具 

         inotify-tools
         tar xf  inotify-tools-3.14.tar.gz
        ./configure && make && make install

 配置内核参数

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

  inotifywait -mrq -e modify,create,move,delete /var/www/html(需要再次打开一个终端进行验证)

         vim /opt/inotify_rsync.sh

 

服务器验证

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

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

相关文章

力扣奇遇记 [第一章]

文章目录 😦第一题:拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容:LeetCode1769. 移动所有球到每个盒子所需的最小操作数🙈思路分析:💖代码产出: 😦第二题&#…

优雅的设计测试用例

⭐️前言⭐️ 入职以后接触到了公司的具体业务,提升了设计测试用例的能力,于是沉淀出这篇文档与大家分享。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获&…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍,在开始讲解这个博客系统项目之前,我们先看看这个项目的前端界面: 登录界面: 个人主页: 博客详情页: 写博客页&#x…

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维护到2019年8月1日。 1.5.x 将会…

【Java】重写compareTo()方法给对象数组排序

我们先给一个数组排序,我们肯定用的是Arrays.sort()方法: public class test2 {public static void main(String[] args) {int[] arr{3,5,4,6,9,8,1};System.out.println(Arrays.toString(arr));System.out.println("---------");Arrays.sort…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

🎬 鸽芷咕:个人主页 🔥 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针运算💭 指针-整数💭 指针-指针💭 指针…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 🔹本节学习目标1️⃣ 线程与进程🔍关于多进程、多线程、并发与并行之间的概念关系? 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …

数学建模学习(4):TOPSIS 综合评价模型及编程实战

一、数据总览 需求:我们需要对各个银行进行评价,A-G为银行的各个指标,下面是银行的数据: 二、代码逐行实现 清空代码和变量的指令 clear;clc; 层次分析法 每一行代表一个对象的指标评分 p [8,7,6,8;7,8,8,7];%每一行代表一个…

为Android构建现代应用——设计原则

为Android构建现代应用——设计原则 - 掘金 state”是声明性观点的核心 在通过Compose或SwiftUI等框架设计声明性视图时,我们必须明确的第一个范式是State(状态)。UI组件结合了它的图形表示(View)和它的State(状态)。UI组件中发生变化的任何属性或数据都可以…

RuoYi-VUE : make sure to provide the “name“ option

前言 略 错误 错误原因 theme-picker 组件未被注册。 解决 src/App.vue代码恢复成若依的代码即可。&#xff08;PS&#xff1a;不知道代码被谁修改了&#xff09; 缺少这一段&#xff1a; <script> import ThemePicker from "/components/ThemePicker";…

hive基础

目录 DDL&#xff08;data definition language&#xff09; 创建数据库 创建表 hive中数据类型 create table as select建表 create table like语法 修改表名 修改列 更新列 替换列 清空表 关系运算符 聚合函数 字符串函数 substring:截取字符串 replace :替换…

C进阶:内存操作函数

内存操作函数 memcpy 头文件&#xff1a;string.h 基本用途&#xff1a;进行不相关&#xff08;不重叠的内存&#xff09;拷贝。 函数原型&#xff1a;void* memcpy(void* destination,//指向目标数据的指针 const void* source,//指向被拷贝数据的指针 size_t num);//拷贝的数…

分布式光伏电站监控及集中运维管理-安科瑞黄安南

前言&#xff1a;今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂…

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型&#xff0c;即傅里叶模型的使用&#xff1b; 当今&#xff0c;傅里叶变换及其所有变体构成了我们现代世界的基础&#xff0c;为压缩、通信、图像处理等技术提供了动力。我们从根源上理解&#xff0c;从根本上应用&#xff0c;这是值得付…

HTML5——基础知识及使用

HTML 文件基本结构 <html><head><title>第一个页面</title></head><body>hello world</body> </html> html 标签是整个 html 文件的根标签(最顶层标签).head 标签中写页面的属性.body 标签中写的是页面上显示的内容.title 标…

实现外部缓存-Redis

目录 实现 RedisTemplate RedisTemplate的序列化 RedisSerializer 创建Redis缓存配置类 测试使用 创建配置类 创建注解测试实体 创建配置文件 创建单元测试类进行测试 实现 RedisTemplate XXXTemplate 是 Spring 的一大设计特色&#xff0c;其中&#xff0c;RedisTe…

Mybatis操作数据库执行流程的先后顺序是怎样的?

MyBatis是一个支持普通SQL查询、存储及高级映射的持久层框架&#xff0c;它几乎消除了JDBC的冗余代码。使Java开发人员可以使用面向对象的编程思想来操作数据库。对于MyBatis的工作原理和操作流程的理解&#xff0c;我们先来看下面的工作流程图。 MaBatis的工作流程 在上图中…

element的el-upload实现多个图片上传以及预览与删除

<el-form-itemlabel"实验室照片:"prop"labUrlList"v-if"ruleForm.labHave"><el-upload:action"urlUpload":headers"loadHeader"list-type"picture-card":file-list"ruleForm.labUrlList"class…

【el-tree查询并高亮】vue使用el-tree组件,搜索展开并选中对应节点,高亮搜索的关键字,过滤后高亮关键字,两种方法

第一种&#xff08;直接展开并高亮关键字&#xff09; 效果图这样的&#xff0c;会把所有的有这些关键字的节点都展开 代码&#xff1a; 这里的逻辑就是通过递归循环把所有和关键字匹配的节点筛选出来 然后通过setCheckedKeys方法把他展开选中 然后通过filterReal把关键字高亮…