目录

一.故事背景

二.SSH带外管理

1.概述

2. 配置文件

3.命令解析

4.登录方式配置

a.用户名密码登录

b.公钥验证登录

5.实操生成密钥对

三.Rsync+sersync实现数据实时同步

1.rsync概述

2.rsync运行原理

3.rsync部署

4.备份测试

配置备份目录

5.rsync+sersync 实现数据实时同步

1 数据同步原理

2 部署rsync+sersync

6.脚本编写

7.总结


一.故事背景

网络服务最后的内容,一个是SSH外带管理,一个是Rsync+sersync实现数据实时同步,其中用的最多的是后者,也要写一个相关脚本

二.SSH带外管理

1.概述

ssh服务,一种远程管理连接工具,在CentOS7系统中默认安装并开机自启的。

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。

监听tcp的22号端口。软件包名称:openssh

配置文件目录:/etc/ssh,sshd_config 服务端配置文件;ssh_config 客户端配置文件。

客户端提供:ssh、scp、sftp命令

服务端提供:sftp服务、ssh服务

2. 配置文件

服务端配置文件: sshd_config

部分内容解析

Port 22 #监听端口


AddressFamily any #ip地址版本


ListenAddress 0.0.0.0 #监听地址,ipv4


ListenAddress :: #监听地址,ipv6


PermitRootLogin yes #是否允许root用户登录


MaxAuthTries 6 #重新连接最大次数


MaxSessions 10 #建立不同用户的会话的最大个数


PubkeyAuthentication yes #是否启用公钥对验证登录


AuthorizedKeysFile      .ssh/authorized_keys #存储客户端公钥信息的文件


PasswordAuthentication yes #是否启用密码验证登录


PermitEmptyPasswords no #是否允许空密码登录


UsePAM yes #启用系统用户及密码进行验证登录


UseDNS no #是否启用ssh内部的解析,会影响连接速度

客户端配置文件: ssh_config,设置ssh命令连接的关键配置

Port 22 #设置ssh命令连接的默认端口

3.命令解析

远程登录命令:

ssh [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)

-p port  指定连接服务器的监听端口

远程拷贝命令:

scp  本机的文件路径  [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径

scp    [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径 本机的文件路径

sftp服务登录命令:

sftp [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)

4.登录方式配置

a.用户名密码登录

默认方式,直接输入登录

b.公钥验证登录

概念解析
对称加密双方采用相同的秘钥,安全性较低
非对称加密双方采用不同的秘钥,安全性较高
公钥大家都可以知道的秘钥。
私钥只有自己知道的秘钥。能够证明自己的身份信息

数据加密

使用对端的公钥加密,接收端收到数据后,使用自己的私钥解密。作用是保证数据完整性。

数字签名

私用自己的私钥加密,接收端收到数据后,使用发送端的公钥解密。作用是保证发送者的身份唯一性。

ssh客户端生成密钥对

生成密钥对的命令:

ssh-keygen ,默认是交互式

常用选项:

-t : 指定秘钥算法
-N : 指定秘钥短语
-f : 指定秘钥存储路径

非交互生成密钥对

ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

#id_rsa: 私钥;id_rsa.pub: 公钥

拷贝公钥命令:ssh-copy-id 

5.实操生成密钥对

先创建一个账户阿白,设置密码

生成密钥ssh-keygen,交互式生成,按三次回车

非交互式生成ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

将密钥复制给其他用户

此时,可以直接使用阿白登录阿绿账户(免密登录)

三.Rsync+sersync实现数据实时同步

1.rsync概述

Rsync(Remote Sync)是Linux系统下的数据镜像备份工具。该工具可以实现远程同步、不同主机之间的同步,也能实现全量备份增量备份,保持数据链接和权限,并采用优化的同步算法,传输前对数据进行压缩,故该工具非常适合架构集中式备份异地备份。也支持本地复制或与ssh、rsync同步。

官网地址:https://rsync.samba.org/

优点:

  • scp无法备份大量数据,而rsync备份、统计、比较一起进行。

  • 可以备份整个目录树和文件系统,并保持文件原来的权限、时间、软硬链接。

  • 安装较容易,无需特殊权限。

  • 同步快速,首次同步完全备份,再次同步增量备份。

  • 可以使用scp和ssh等方式传输备份文件

  • 支持匿名传输

  • 选择性保持:符号链接、硬链接、文件属性、权限、时间等

  • 传输速度快:压缩再传输、解压再使用,减少带宽。

备份分类:

  • 完全备份:所有文件进行备份

  • 差异备份:备份自上次完全备份以来所有的修改

  • 增量备份:备份自上次备份依赖所作的修改

2.rsync运行原理

rsync采用C/S模式,即点到点的传输。通过xinetd服务监听873端口,再让xinetd服务下的rsync服务作出响应。

源主机:需要同步数据的服务器

目标主机:存放服务器同步数据的主机

数据同步方式:push 和 pull

  • 推push:主动同步,把数据发送给目标主机。服务器开销大,适合后端服务器较少的情况。【服务器备份推给rsync客户端存放,主动模式】

目的主机配置为 rsync 服务端,源主机周期性的使用 rsync 命令把要同步的目录推过去。

  • 拉pull:所有客户端主机去服务器上面拉数据,导致数据传输缓慢。【rsync客户端去服务器上拉数据,存放到客户端上,被动模式】

源主机配置为 rsync 服务端,目的主机周期性的使用 rsync 命令把要同步的目录拉过来。

3.rsync部署

查看是否监听873端口号

配置文件/etc/rsyncd.conf

参数作用
-a–archive archive mode权限保存模式【递归、保持属性】
-r递归处理
-p保留文件原有属性
-t保留文件原有时间
-g保留属组
-o保留档案所有者
-D保留device咨询
-l复制所有的连接
-z压缩传输
-H保留硬链接文件
-A保留文件的ACL属性
-P–progress
-–version输出rsync版本信息
-v显示输出过程
-u仅进行更新
–-port指定端口号,默认873
–-delete删除那些目标位置有的文件而备份源没有的文件,最大程度的保持一致
–-password-file指定密码文件
–-bwlimit限制I/O带宽
–-filter需要过滤的文件
–-exclude需要过滤的文件
–-progress显示备份过程
–avz常用:保留权限、显示同步过程、压缩传输

4.备份测试

配置备份目录

  • 服务器:sourcePC 192.168.71.151 (需要进行数据备份的主机)

  • 客户端:targetPC 192.168.71.149 (备份存储的主机)

编写客户端/etc/rsyncd.conf文件,并且创建目录/door/backup

给密码文件加上权限,不然会报错

然后进行跨机备份,输入密码(123456)

成功接收两个文件

此时再创建两个文件后重新备份

此时将会删除那些目标位置有的文件而备份源没有的文件,最大程度的保持一致。

若是拉取数据

cat /etc/rsync.passwd
123456
chmod 600 /etc/rsync.passwd
rsync -avz /data rsyncuser@192.168.71.149::data --password-file=/etc/rsync.passwd

5.rsync+sersync 实现数据实时同步

1 数据同步原理

1、为什么要是用rsync+sersync

sersync是基于inotify开发的,可以记录目录中发生变化的内容,具体到某个文件或者目录,在使用rsync同步的时候,只同步发生变化的文件或者目录。【增量同步】

2、rsync+inotify-tools 与 rsync+sersync 架构的区别?

①inotify-tools只能记录目录发生了变化,但是不能具体到某个文件或者目录。

②rsync同步不清楚哪些文件或目录发生了变化,就会整个目录都同步,效率低。

3、同步过程:

①源服务器上开启sersync记录指定路径的文件系统变化情况。

②源服务器上使用rsync命令把变化的数据同步到目标服务器上。

③源服务器上配置sersync服务,目标服务器安装rsync服务。

2 部署rsync+sersync

sersync服务端【同步服务器】:192.168.71.151

rsync客户端【存放备份,目标服务器】:192.168.71.149

由于sersync只能监控到差异变化,同步还是需要rsync去做,所以先确保rsync运行正常。可以测试一遍,看能否做完全同步。

修改文件内容为

然后启动服务(因为在当前目录,直接./)

在一边创建文件,一边完成实时监控

6.脚本编写

先在目标主机编写配置脚本

#!/bin/bash
systemctl status rsyncd &> /dev/null
if [ $? -ne 0 ];then
systemctl start rsyncd 
firead -p "请输入ip地址:" ip
read -p "请输入创建的文件名称:" file
read -p "请输入跨机使用的密码:" passwd
mask=`echo $(echo $ip | cut -d. -f1,2,3).0/24`
echo "port=873
address = $ip
uid = root
gid = root
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
hosts allow = $mask
[$file]
path = /$file/backup
comment = bakcup data
read only = false
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.passwd">/etc/rsyncd.conf
touch /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
echo "rsyncuser:$passwd">/etc/rsync.passwd
mkdir -p /$file/backup
echo "Welcome to Backup server">/etc/rsyncd.motdsystemctl restart rsyncd

运行后创建成功 

 

再在源主机编写一个简单的备份脚本

#!/bin/bash
systemctl status rsyncd &> /dev/null
if [ $? -ne 0 ];then
systemctl start rsyncd
firead -p "请输入要备份的目录:(格式:/目录)" dir
read -p "请输入要备份的目标主机ip:" ip
read -p "请输入目标地址创建的文件名称:" nameread -p  "是否选择最大程度保持一直?(y/n): " choose
if [ "$choose" == "n" ];then
rsync -avz $dir  rsyncuser@$ip::$name
else
rsync -avz --delete  $dir  rsyncuser@$ip::$name
fi

 然后输入信息后运行脚本,在目标主机上可以看到备份成功

7.总结

  • rsync可以进行数据的同步,可以使用推和拉两种方式。推即源主机推数据到目标主机,拉即目标主机从源主机上拉数据。

  • push:服务器向客户端推送数据,要在目标主机上配置一个共享目录,在服务端上使用rsync命令推送数据给目标主机。

  • pull:客户端向服务器拉去数据,需要把服务器上的同步目录配置成一个共享目录,然后客户端去这个共享目录上拉去数据。

  • 仅使用rsync同步数据,不会记录数据的变化,每次同步都是同步整个目录,不适合大量数据的同步。

  • 结合使用rsync+sersync,sersync负责监控源主机上同步目录的数据变化,rsync负责同步变化的部分,极大地提高了同步的效率。


伴随本次内容的结束,网络服务也是告一段落,来不及悲伤,即将向我们走来的是!Nginx!

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

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

相关文章

SpringAI + DeepSeek大模型应用开发 - 初识篇

一、认识AI 1. AI的发展 AI,人工智能(Artificial Intelligence),使机器能像人类一样思考、学习和解决问题的技术。 2. 大模型及其原理 在自然语言处理(Natural Language Processing, NLP)中,…

c++第八天-多态

虚函数虚析构函数纯虚函数与抽象类 多态实现的条件:(1)公有继承 (2)派生类重写基类虚函数 (3)基类指针/引用指向派生类对象 虚函数不能是构造函数,不能是静态函数,不能…

全景图渲染Vue3+TS使用Photo Sphere Viewer插件实现

1.Photo Sphere Viewer插件安装: title=插件安装 体验AI代码助手 代码解读复制代码npm install photo-sphere-viewer -S 或 yarn add photo-sphere-viewer -S 2.原始全景图展示 初始化标签容器 体验AI代码助手 代码解读复制代码 // 全景图的根节点必须要具备宽高 TS引用,创建…

Redis之分布式锁(3)

这篇文章我们来详细介绍一下如何正确地基于Redis实现分布式锁。 基于Redis的分布式锁实现 组件依赖 首先通过Maven引入Jedis开源组件&#xff0c;在pom.xml文件加入下面的代码&#xff1a; <dependency><groupId>redis.clients</groupId><artifactId&g…

Java课堂笔记11

三个修饰符 一、abstract&#xff08;抽象&#xff09; 1.抽象方法只能在抽象的类里&#xff0c;只有方法的声明&#xff0c;没有方法的实现。&#xff08;没有{}直接&#xff1b;结尾&#xff09;。 2.abstract修饰的类称为抽象类。 注意&#xff1a;&#xff08;1&#x…

Linux 核心知识点整理(高频考点版)

一、编译与工具链 GCC 编译流程 四阶段&#xff1a;预处理&#xff08;-E&#xff0c;处理头文件 / 宏&#xff09;→ 编译&#xff08;-S&#xff0c;生成汇编&#xff09;→ 汇编&#xff08;-c&#xff0c;生成目标文件&#xff09;→ 链接&#xff08;生成可执行程序&…

轻量化社交管理方案:Skout与云手机的巧妙搭配

在移动社交时代&#xff0c;许多用户开始尝试通过多账号管理来拓展社交圈层。近期测试了Skout社交平台与亚矩阵云手机的搭配使用&#xff0c;发现这个组合为轻量级社交账号管理提供了一个值得关注的解决方案。 基础功能介绍 这套组合的核心优势在于&#xff1a; 通过云手机实…

ETL连接器好用吗?如何实现ETL连接?

目录 一、ETL连接器的功能和优势 1. 数据抽取能力 2. 数据转换功能 3. 数据加载功能 4. 优势总结 二、实现ETL连接的步骤 1. 需求分析 2. 选择合适的ETL连接器 3. 配置数据源和目标系统 4. 设计ETL流程 5. 开发和测试ETL任务 6. 部署和监控ETL任务 三、ETL连接器在…

uniapp实现聊天中的接发消息自动滚动、消息定位和回到底部

前言 前言无需多言&#xff0c;想必大家对聊天软件的功能已经很熟悉&#xff0c; 这里不做过多赘述&#xff0c;笔者通过uniapp实现聊天中的接发消息自动滚动、消息定位和回到底部。 代码实现 <template><view class"chat-container"><!-- 消息列表…

MyBatisMyBatis plus

整合 MyBatis 到 Spring 或 Spring Boot 项目中&#xff0c;可以极大地简化开发流程&#xff0c;尤其是当使用 Spring Boot 时&#xff0c;它提供了自动配置功能&#xff0c;使得集成更加简便。 在 Spring Boot 中整合 MyBatis 1. 添加依赖 首先&#xff0c;在 pom.xml 文件中…

Stable Diffusion 实战-手机壁纸制作 第二篇:优化那些“崩脸”和“马赛克”问题,让图像更加完美!

欢迎回来!在《StableDiffusion实战-手机壁纸制作》系列的第一篇中,我们成功完成了基础操作,制作出了令人炫目的手机壁纸。 今天,我们将进入一个更高阶的领域——优化处理。因为谁不想让生成的艺术品更完美呢?尤其是避免“崩脸”和“马赛克”这种让人抓狂的问题! 创作的路…

408第一季 - 数据结构 - B树与B+树

B树 性质 可以看见一个节点可以有多个数字了 然后也满足左小右大的特征 然后所有的叶子节点都在同一层&#xff0c;然后2个数字的节点就可以有3个分支 然后呢&#xff0c;每个节点里面到底有几个数字是有规定的公式的 就这个公式&#xff0c;m是5阶的&#xff0c;算出来是2和…

SSRF5 Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型和POST类型

实验环境&#xff1b; Centos7.6上同时安装sqli-lib和pikachu 一.Gopher 协议对内网 Web 服务进行 sql 注入 GET 类型 我们先访问sqli-lib第1关 然后我们构造URL&#xff1a; http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?urlhttp://192.168.112.12/sql…

Python打卡DAY31

DAY31&#xff1a;文件的规范拆分和写法 恩师浙大疏锦行 知识点&#xff1a; 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 一、机器学习项目流程&#xff1a; 1、数据加载&#xff1a;从文件、数据库、API 等获取原始数据。 - 命名参考&#xff1a;…

字符串大数 -减法

描述 以字符串的形式读入两个数字&#xff0c;编写一个函数计算它们的和&#xff0c;以字符串形式返回。 代码实现 大小判断&#xff1a;a - b 与 b - a 的绝对值相等将大的数放前面&#xff0c;抽离出结果的符号 import random s, t str(random.randint(1000, 9999)), s…

android google tts如何不联网内部预置多国语音包

在内置Google GMS服务的设备中&#xff0c;可以正常使用TTS&#xff0c;并且可以联网下载多国的语音包。然而&#xff0c;对于未通过GMS认证&#xff0c;只能使用基础的TTS英语播报&#xff0c;而且联网后是无法下载语音包的&#xff0c;会提示需要google service。本文基于以上…

Java 全栈开发学习:从后端基石到前端灵动的成长之路

目录 一、开篇&#xff1a;与 Java 全栈的初遇 二、后端学习&#xff1a;SpringBoot 构建稳健基石 &#xff08;一&#xff09;SpringBoot3 入门&#xff1a;简约而不简单的启程 &#xff08;二&#xff09;Spring Boot Web 应用开发&#xff1a;构建交互桥梁 &#xff08;…

AquaCrop模型源代码分析、模型优化与敏感性分析、未来气候变化影响分析

AquaCrop是由世界粮食及农业组织&#xff08;FAO&#xff09;开发的一个先进模型&#xff0c;旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理&#xff0c;特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop 不…

开源模型应用落地-让AI更懂你的每一次交互-mem0-QDrant-Streamlit(一)

一、前言 在人工智能迅猛发展的今天,大型语言模型(LLM)已经成为各行各业的重要工具。然而,尽管这些模型在生成文本、理解语义等方面表现出色,但它们仍然面临一个关键挑战——缺乏持久的记忆能力。传统的对话系统往往只能基于当前对话轮次进行回应,无法有效保留和利用历史…

RPC - Response模块

Requestor 类是一个请求-响应管理器&#xff0c;负责发送请求并处理响应&#xff0c;支持三种交互模式&#xff1a;同步、异步和回调。它跟踪所有发出的请求&#xff0c;当响应到达时将其匹配到对应的请求并进行处理。 newDescribe 函数解析 newDescribe 函数负责创建和注册一…