探索rsync远程同步和SSH免密登录的奥秘
目录
- 集群分发脚本xsync
- scp(secure copy)安全拷贝
- rsync 远程同步工具
- 集群分发脚本
- SSH免密登录
- 免密登录原理
- SSH免密登录配置
- 生成公钥和私钥
- 授权
- 测试
在现代科技飞速发展的时代,数据的备份和迁移成为了一个重要的课题。其中,rsync远程同步和SSH免密登录成为了程序员们常用的工具和技巧。它们能够帮助我们高效地进行文件同步和管理,使数据的传输更加快速和安全。
在本篇文章中,我们将深入探索rsync远程同步和SSH免密登录的奥秘。我们将介绍如何配置SSH免密登录,以及如何使用rsync来进行文件的远程同步。
集群分发脚本xsync
scp(secure copy)安全拷贝
(1)定义:scp可以实现服务器与服务器之间的数据拷贝
(2)基本语法:
scp -r $pdir/$fname $user@$host:$pdir/$fname
# scp 命令
# -r 递归
# $pdir/$fname 要拷贝的文件路径/名称
# $user@$host:$pdir/$fname 目的地用户名@主机:目的地路径/名称
(3)案例:
在hadoop102上,把数据拷贝到hadoop103
scp -r jdk1.8.0_371/ root@hadoop103:/opt/module
在hadoop103上,拉取hadoop102的数据
scp -r root@hadoop102:/opt/module/hadoop-3.2.4 ./
rsync 远程同步工具
rsync是一个功能强大的文件同步工具,它能够通过比较源和目标文件的内容差异,只传输差异部分,从而大幅度提升文件传输的效率。这种差异传输的机制,使得rsync在大规模数据备份和迁移中得到了广泛的应用。它能够通过多种传输协议,包括本地文件系统、SSH和RSYNC等,来实现跨平台和跨网络的文件同步。
rsync主要用于备份和镜像,具有速度快、避免复制相同的内容和支持符号链接的特点。
rsync比 scp 复制文件速度要快,rsync只对差异化文件做更新,scp是把所有文件都复制过去
- 基本语法
rsync -av $pdir/$fname $user@host:$pdir/$fname
# rsync 命令
# -av -a 归档拷贝 -v 显示复制过程
# $pdir/$fname 要拷贝的文件路径/名称
# $user@host:$pdir/$fname 目的地用户名@主机目的地路径/名称
- 案例:
在hadoop102上,同步hadoop102上的数据到hadoop103
rsync -av hadoop-3.2.4/ root@hadoop103:/opt/module/hadoop-3.2.4/
集群分发脚本
循环复制文件到所有节点的相同目录下
rsync命令原始拷贝rsync -av /opt/module root@hadoop103:/opt
期望脚本使用方式:xsync 要同步的文件名称
期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
[amo@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_371/bin:/opt/module/hadoop-3.2.4/bin:/opt/module/hadoop-3.2.4/sbin:/home/amo/.local/bin:/home/amo/bin
home目录下创建bin文件夹,并在该文件夹下创建xsync文件vim xsync (名字随便起)
#!/bin/bash#1.判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2.遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ========= = $host =============#3.遍历所有目录,一个个发送for file in $@do#4.判断文件是否存在if [ -e $file ]then#5.获取父目录pdir=$(cd -P $(dirname $file); pwd)#6.获取当前文件的名称filename=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$filename $host:$pdirelseecho $file does not exists!fidone
done
修改脚本 xsync 具有执行权限
chmod 777 xsync
测试脚本
xsync /bin
将脚本复制到/bin中,以便全局调用
sudo cp xsync /bin/
同步环境变量配置(root所有者)
sudo ./bin/xsync /etc/profile.d/my_env.sh
环境变量生效source /etc/profile
SSH免密登录
SSH免密登录则是一种安全的通信协议,它能够建立起安全的连接,从而实现在远程服务器上执行命令,而无需手动输入密码。通过使用公钥和私钥的加密方式,SSH免密登录能够防止密码被窃取,并提供更高的安全性。
免密登录原理
- A服务器通过
ssh-keygen -t rsa命令生成密钥对(公钥和私钥) - A服务器通过
ssh-copy-id 服务器B命令将公钥拷贝到B服务器 - A服务器ssh访问B服务器(数据用私钥加密)
- B服务器接收到数据后,去授权的key中查找A服务器的公钥,并解密数据
- 将采用A公钥加密后的数据返回给A服务器
SSH免密登录配置
#切换到home目录下
cd ~
# 查看home目录下的所有文件(包括隐藏文件)
ll -al
# 切换到.ssh文件夹下
cd .ssh
# 生成公钥和私钥
ssh-keygen -t rsa
# 授权给另一个服务器
ssh-copy-id hadoop103
生成公钥和私钥
# 生成公钥和私钥
[root@hadoop102 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:pCATVCsPvIqYqZMz0KYnHxIE5V7gsqz+MU41co6SkNY root@hadoop102
The key's randomart image is:
+---[RSA 2048]----+
|.o=.. |
|.+ o . |
|..O + . |
|o=.O . o |
|=+oE.+. S |
|B=+ * . |
|X*.= . |
|X.=.o |
|.Ooo |
+----[SHA256]-----+
授权
将生成的公钥通过命令拷贝到你要授权的服务器
# 授权
[root@hadoop102 .ssh]# ssh-copy-id hadoop103
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop103's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'hadoop103'"
and check to make sure that only the key(s) you wanted were added.[root@hadoop102 .ssh]# ssh-copy-id hadoop104
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop104's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'hadoop104'"
and check to make sure that only the key(s) you wanted were added.
测试
[amo@hadoop102 ~]$ ssh hadoop103
Last login: Fri Mar 1 19:40:22 2024 from 192.168.1.1
[amo@hadoop103 ~]$
相关文章:
探索rsync远程同步和SSH免密登录的奥秘
目录 集群分发脚本xsyncscp(secure copy)安全拷贝rsync 远程同步工具集群分发脚本 SSH免密登录免密登录原理SSH免密登录配置生成公钥和私钥授权测试 在现代科技飞速发展的时代,数据的备份和迁移成为了一个重要的课题。其中,rsync远…...
JavaScript new、apply call 方法
new、apply、call、bind JavaScript 中的 apply、call和 bind 方法是前端代码开发中相当重要的概念,并且与 this 的指向密切相关 new new 关键词的主要作用 就是执行一个构造函数、返回一个实例对象 根据构造函数的情况,来确定是否可以接受参数的传递…...
助力智能化农田作物除草,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统
在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于DETR模型来开发构建玉米…...
O(1)转移线性dpLeetCode 2369. 检查数组是否存在有效划分
一、题目 1、题目描述 给你一个下标从 0 开始的整数数组 nums ,你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 ,则可以称其为数组的一种 有效 划分: 子数组 恰 由 2 个相等元素组成…...
【力扣hot100】刷题笔记Day17
前言 今天竟然不用开组会!天大的好消息,安心刷题了 46. 全排列 - 力扣(LeetCode) 回溯(排列) class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…...
leetcode日记(34)通配符匹配
这道题做了很久很久……一开始我想用的方法是使用双指针,分别指向两数组,然后依次按照题目中的规则遍历,做了很久发现时间超限了!这是我最后超时的代码! class Solution { public:bool isMatch(string s, string p) {…...
一张图读懂人工智能
一、生成人工智能的概念和应用,以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力,被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和,并回答任何…...
5.37 BCC工具之uflow.py解读
一,工具简介 uflow工具用于跟踪方法的进入和退出事件,并打印一个可视化的流程图,显示方法是如何进入和退出的,类似于带有断点的跟踪调试器。这对于理解Java、Perl、PHP、Python、Ruby和Tcl等高级语言中的程序流非常有用,这些语言为方法调用提供了USDT探测。 二,代码示例…...
R语言简介,R语言开发环境搭建步骤,R基础语法以及注释详解
R语言是一种用于统计计算与绘图的编程语言,由新西兰奥克兰大学的统计学家罗斯伊哈卡和罗伯特杰特曼于1993年发明。R语言是一种自由、免费、源代码开放的软件,属于GNU系统的一个分支,如今被广泛地应用于统计分析、数据挖掘等领域。 R语言的特…...
【Django】执行查询—检索对象
检索对象 以下述模型为基础,讨论检索对象的方式方法: from datetime import datefrom django.db import modelsclass Blog(models.Model):name models.CharField(max_length100)tagline models.TextField()def __str__(self):return self.nameclass …...
Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款
案例: python编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款: Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考: 写入一个美金数量&…...
模板方法模式 详解 设计模式
模板方法模式 模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这种模式允许子类在不改变算法结构的情况下重新定义算法的某些步骤。 结构 抽象类(Abstract Class):负责给出一…...
Node.js_基础知识(http模块)
网络基础 URL的组成结构:协议名: // 主机名 [:端口号] [/路径] [?查询字符串]协议默认端口: http:80,开发常用端口有 3000、8080、8090、9000https: 443 如果端口被其他程序占用,可以使用 资源监视器 找到占用端口的…...
matlab工具包
matlab安装yalmip和cplex出错 - 知乎 (zhihu.com) Cplex的安装和使用实例-CSDN博客 一条龙教程:Matlab下使用yalmip(工具箱)cplex(求解器)_使用yalmip和cplex求解器进行建模和求解的步骤如下:-CSDN博客 啊啊啊,好开心ÿ…...
UCSF DOCK 分子对接详细案例(01)- rigid, fixed anchor, flexible dock
欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、操作环境二、研究背景三、受体-配体结构文件准备3.1准备文件夹DOCK_workdir, 下载晶体结构3.1.1 来自湿实验的受体配体共晶结构:3.1.2 来自深度学习和语言模型推理预测的蛋白结构&a…...
java基础(4)注解,集合,
注解 什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释” // this is a component: Resource("hello") public class Hello {Injectint n;PostConstructpublic void hello(Param String name…...
基于springboot+vue的大学城水电管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
代码随想录算法训练营第四十六天| 139.单词拆分、卡码网第56题
代码随想录算法训练营第四十六天| 139.单词拆分、卡码网第56题 139.单词拆分卡码网第56题 139.单词拆分 题目链接 文章讲解 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {int bagSize s.size(), n wordDict.size();vector<boo…...
Redis 在 Linux 系统下安装部署的两种方式详细说明
小伙伴们好,欢迎关注,一起学习,无限进步 Redis安装和配置 1、首先在官网下载好redis-6.0.9.tar.gzhttp://redis.io/ 或者使用 wget 命令下载:wget http://download.redis.io/releases/redis-6.0.9.tar.gz 2、下载使用上传到阿里…...
【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)
💯 博客内容:【茶话数据结构】查找最短路径——Dijkstra算法详解 😀 作 者:陈大大陈 🦉所属专栏:数据结构笔记 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...
ABAP设计模式之---“Tell, Don’t Ask原则”
“Tell, Don’t Ask”是一种重要的面向对象编程设计原则,它强调的是对象之间如何有效地交流和协作。 1. 什么是 Tell, Don’t Ask 原则? 这个原则的核心思想是: “告诉一个对象该做什么,而不是询问一个对象的状态再对它作出决策。…...
[C++错误经验]case语句跳过变量初始化
标题:[C错误经验]case语句跳过变量初始化 水墨不写bug 文章目录 一、错误信息复现二、错误分析三、解决方法 一、错误信息复现 write.cc:80:14: error: jump to case label80 | case 2:| ^ write.cc:76:20: note: crosses initialization…...
