探索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是把所有文件都復制過去

  1. 基本語法
rsync -av $pdir/$fname $user@host:$pdir/$fname
# rsync 命令
# -av   -a 歸檔拷貝   -v 顯示復制過程
# $pdir/$fname 要拷貝的文件路徑/名稱
# $user@host:$pdir/$fname 目的地用戶名@主機目的地路徑/名稱
  1. 案例:
    在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免密登錄能夠防止密碼被竊取,并提供更高的安全性。

免密登錄原理

  1. A服務器通過ssh-keygen -t rsa命令生成密鑰對(公鑰和私鑰)
  2. A服務器通過ssh-copy-id 服務器B命令將公鑰拷貝到B服務器
  3. A服務器ssh訪問B服務器(數據用私鑰加密)
  4. B服務器接收到數據后,去授權的key中查找A服務器的公鑰,并解密數據
  5. 將采用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 ~]$ 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712576.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712576.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712576.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據畢業設計之前端04:管理系統為什么要自己實現圖標組件

關鍵字:BuildAdmin、Icon、圖標、Vue、ElementUI 前言 說到圖標,在BuildAdmin中用到的地方很多。比如上一篇中的折疊圖標,還有菜單欄圖標、導航菜單欄圖標等。常見的圖標有:ElementUI圖標、font-awesome、iconfont阿里圖標以及本…

94. 遞歸實現排列型枚舉 刷題筆記

思路 依次枚舉 每個位置用哪個數字 要求按照字典序最小來輸出 而每次搜索下一層時i都是從1開始 也就是說 如果有小的數可以填上 那么該方案會填上這個數字 例如 當n等于3 第一次搜索 1 2 3輸出后返回 返回后此時i3 第二個位置填3 1 3 2 輸出后返回 此時返回到第一層…

云計算 2月21號 (linux文件及用戶管理)

一、文件管理 1.1快捷鍵 編輯命令: Ctrl a :移到命令行首 Ctrl e :移到命令行尾 Ctrl u :從光標處刪除至命令行首 Ctrl k :從光標處刪除至命令行尾 Ctrl w :從光標處刪除至字首 Ctrl d &#x…

20240301-2-ZooKeeper面試題(二)

11. Chroot 特性 3.2.0 版本后,添加了 Chroot 特性,該特性允許每個客戶端為自己設置一個命名空間。如果一個客戶端設置了 Chroot,那么該客戶端對服務器的任何操作,都將會被限制在其自己的命名空間下。 通過設置 Chroot&#xff…

Win11遠程桌面登陸教程

必備軟件 Remote Desktop 這個軟件用于便捷操作 Tailscale 這個用于創建虛擬局域網讓兩臺設備處于同一個網段便于遠程連接 詳細步驟 0、打開電腦設置允許遠程連接模式 把這里的開關打開就行。 1、設置允許登陸的用戶以及密碼 在管理員模式下的宿主電腦上面輸入以下命令…

支付寶小程序中喚起支付(前后端)

Java后臺獲取支付寶支付唯一訂單號 /*** 支付寶小程序支付*/PostMapping(value "/xcxPayZFBTHREE")ResponseBodypublic Map<String,Object> xcxPayZFBTHREE(RequestBody byte[] req) {HashMap<String, Object> objectObjectMap new HashMap<>();…

jax可微分編程的筆記(7)

jax可微分編程的筆記(7) 第七章 優化算法 從優化理論的整體框架來看&#xff0c;任何優化問題都可以被分解為 模型的建立&#xff0c;損失函數的構造以及優化算法的選取這三個部分。 其中優化算法的具體形式&#xff0c;又依賴于步長下降方向和終止條件 的選取。 對于多維函…

JavaScript 瀏覽器元素滾動 scrollIntoView()

scrollIntoView() ? DOM 規范中沒有涉及的一個問題是如何滾動頁面中的某個區域。為填充這方面的缺失&#xff0c;不同瀏覽器實現了不同的控制滾動的方式。在所有這些專有方法中&#xff0c;HTML5 選擇了標準化 scrollIntoView()。 ? scrollIntoView() 方法存在于所有 HTML …

深度學習中常見的backbone、neck、head的理解

在深度學習中&#xff0c;常見的backbone、neck和head是指網絡結構的不同部分&#xff0c;它們各自承擔著不同的功能&#xff1a; Backbone&#xff08;骨干網絡&#xff09;&#xff1a;骨干網絡通常是指整個深度神經網絡的主要部分&#xff0c;負責提取輸入數據的特征。骨干網…

寒假作業Day 02

這是第二天的作業&#xff0c;fighting&#xff01; Day 02 一、選擇題 首先char* s[6]是指針數組&#xff0c;也就是其存儲的都是這些字符串的地址&#xff0c;其實際上的類型為char**&#xff0c;而fun函數傳入了s數組的首地址。而后續fun函數中打印字符&#xff0c;p[i]即…

ad18學習筆記十六:如何放置精準焊盤到特定位置,捕抓功能的講解

網上倒是一堆相關的指導 AD軟件熟練度提升&#xff0c;如何設置板框捕捉&#xff1f;_嗶哩嗶哩_bilibili 關于Altium Designer 20 的捕抓功能的講解_ad捕捉設置-CSDN博客 AD軟件捕捉進階實例&#xff0c;如何精確的放置布局元器件&#xff1f;_嗶哩嗶哩_bilibili AD繪制PCB…

項目-SERVER模塊-Socket模塊

Socket模塊 一、Socket模塊是什么&#xff1f;二、代碼實現1.成員變量2.構造、析構函數3.獲取套接字文件描述符4.創建套接字5.綁定地址信息6.開始監聽連接請求7.向服務器發起連接8.獲取新連接9.接收數據10.非阻塞接收數據11.發送數據12.非阻塞發送數據13.關閉套接字14.創建一個…

何時使用子查詢?一個使用子查詢的SQL示例及其工作原理

何時使用子查詢&#xff1f;給出一個使用子查詢的SQL示例&#xff0c;并解釋其工作原理。 子查詢&#xff0c;也稱為內部查詢或嵌套查詢&#xff0c;是嵌入在另一個SQL查詢中的查詢。外部查詢&#xff0c;有時稱為外部查詢或主查詢&#xff0c;是包含子查詢的查詢。子查詢可以…

20240301作業

1.使用fwrite、fread將一張隨意的bmp圖片&#xff0c;修改成德國的國旗 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main(int argc, const char *argv[]) {FILE* fp fopen("./gaoda.bmp","…

24.3.1 《CLR via C#》 筆記9

第十二章 泛型 泛型&#xff1a;支持泛型值類型、泛型引用類型、泛型接口、泛型委托&#xff1b;允許在引用類型、值類型和接口中定義泛型方法&#xff1b;泛型參數變量要么稱為T&#xff0c;要么以T開頭 具有泛型類型參數的類型稱為開放類型&#xff0c;不允許構造實例&#…

Java畢業設計 基于SpringBoot vue 社區團購系統

Java畢業設計 基于SpringBoot vue 社區團購系統 SpringBoot vue 社區團購系統 功能介紹 前端用戶: 首頁 圖片輪播 商品信息 商品分類展示 搜索 商品詳情 點我收藏 添加到購物車 立即購買 我要開團 去參團 評論 公告資訊 資訊詳情 登錄 注冊 個人中心 更新信息 點我充值 我的訂…

Mysql筆記3

1、快速創建表 原理&#xff1a; 將一個查詢結果當做一張表新建 這個可以完成表的快速復制 create table emp2 as select * from emp; mysql> select * from emp2; ---------------------------------------------------------------------- …

【vscode提取函數快捷鍵】提取函數,減少大方法的復雜度

在 Visual Studio Code 中&#xff0c;提取函數的快捷鍵取決于你所使用的編程語言和安裝的插件。以下是一些常用的快捷鍵組合&#xff0c;可以用來在 Visual Studio Code 中提取函數&#xff1a; 執行以下步驟來提取函數&#xff1a; 選中要提取的代碼塊。右鍵單擊選中的代碼…

System Verilog學習筆記(十二)——數組(2)

System Verilog學習筆記&#xff08;十二&#xff09;——數組&#xff08;2&#xff09; 動態數組 在編譯時不會為其定制尺寸&#xff0c;而是在仿真運行時來確定動態數組一開始為空&#xff0c;需要使用new[ ]來為其分配空間聲明方式 int dyn[],d2[]; //聲明了兩個動態數組…

git之遠程操作

一.分布式版本控制系統 分布式版本控制系統通常也有?臺充當“中央服務器”的電腦&#xff0c;但這個服務器的作?僅僅是?來?便“交換”?家的修改&#xff0c;沒有它?家也?樣?活&#xff0c;只是交換修改不?便?已。有了這個“中央服務器”的電腦&#xff0c;這樣就不怕…