Shell脚本系列|scp多节点传输

一、Scp工作原理

SCP(Secure Copy)是一种基于SSH协议进行加密传输的文件复制协议。它的工作原理主要涉及以下几个步骤:

  1. 建立SSH连接:在进行SCP文件传输之前,首先需要建立SSH连接。客户端向服务器端发起连接请求,并提供身份验证信息(如用户名和密码或密钥对)。如果身份验证成功,双方将建立起一个安全的通道。
    建立传输通道:一旦SSH连接建立成功,客户端会发送一个文件传输请求,并指定要传输的文件的路径和目标位置。服务器端在收到请求后,会在安全通道中创建一个临时的传输通道,用于传输文件数据。
  2. 加密传输:在传输通道建立后,SCP利用SSH协议的加密机制对文件数据进行加密。加密后的数据通过传输通道安全地传输到目标位置。在传输过程中,数据被保护以防止被窃取或篡改。
  3. 写入目标位置:一旦文件数据成功传输到目标位置,SCP服务端会将加密的数据解密,并将解密后的文件写入到指定的目标目录中。

二、SCP命令说明

### linux的scp命令可以在linux服务器之间复制文件和目录。
scp [参数] [原路径] [目标路径]
### 当前服务器传输文件:目录之间
scp -r /opt /mnt
### 远程服务器传输文件:远程传输
scp -r /opt root@192.168.88.77:/mnt
### 从远程服务端复制到当前客户端
scp root@192.168.88.67:/opt/zook.sh /mnt/
### 从指定的服务端复制到指定的客户端
scp -r root@192.168.88.67:/opt root@192.168.88.77:/mnt/

参数:
-p:保留原文件的修改时间、访问时间和访问权限
-q:不显示传输进度条
-r:递归复制整个目录。
-v:详细方式显示输出。这将显示整个过程的调试信息,用于调试连接、验证和配置问题。
-P:指定数据传输用到的端口号(注意是大写的P)
-C:允许压缩。这将打开压缩功能,文件在传输过程中会被压缩,并在目的主机上解压缩。

三、Scp多节点传输脚本

[root@localhost ~]# cat scp.sh 
#!/bin/bash
# 源文件路径
source_file="/root/docker-bin-setup-offline"

target_hosts=(
  10.10.101.{115..116}
  10.10.102.{129..130}
)
target_path="/root/"
# 循环迭代目标主机列表,并使用 scp 命令将文件复制到每个主机
for hostip in "${target_hosts[@]}"; do
  scp -r $source_file root@$hostip:$target_path
  if [ $? -eq 0 ]; then  
    echo "文件已成功复制到 $hostip"  
  else  
    echo "文件复制到 $hostip 失败"  
  fi  
done

可结合ssh密钥分发,提高效率:
Shell脚本系列| SSH分发公钥方法

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值