Linux 集群分发脚本 xsync

本文详细介绍了SCP(安全拷贝)用于服务器间文件迁移的方法,包括基本语法和实操案例。接着,RSYNC被介绍为更快速的远程同步工具,及其使用案例。最后,探讨了适用于集群分发的脚本xsync,如何实现文件循环复制到多个节点。

1、scp(secure copy)安全拷贝

1.1、定义

scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

1.2、基本语法
scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   递归       要拷贝的文件路径/名称    目的用户@主机:目的路径/名称
1.3、案例实操
  1. 在hadoop102上,将hadoop101中/opt/module目录下的 jdk1.8.0_212拷贝到hadoop103上。
 scp -r jdk1.8.0_212/ song@hadoop103:/opt/model/
  1. 在hadoop103上,将hadoop102服务器上的/opt/module/目录下的hadoop-3.1.3拷贝到hadoop103上的/opt/model/
scp -r song@hadoop102:/opt/model/hadoop-3.1.3 /opt/model/
  1. 在hadoop103上,将hadoop102服务器上的/opt/module/目录下的jdk1.8.0_212软件拷贝到hadoop104上opt/model/下
 scp -r song@hadoop102:/opt/model/jdk1.8.0_212 song@hadoop104:/opt/model/

2、 rsync 远程同步工具

2.1、定义

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

2.2、基本语法
rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称    目的用户@主机:目的路径/名称

选项参数说明
-a	归档拷贝
-v	显示复制过程
-l	拷贝符号连接

2.3、案例实操
  1. 把hadoop102机器上的/opt/software目录下的hadoop-3.1.3/同步到hadoop104服务器的下的/opt/model/hadoop-3.1.3目录
rsync -av hadoop-3.1.3/ song@hadoop104:/opt/model/hadoop-3.1.3

3、集群分发脚本 xsync

3.1、需求:

循环复制文件到所有节点的相同目录下

3.2、期望脚本:

在任何目录下都可以使用该命令的方式,一种是放在当前用户的bin目录下,另外一种就是自定义路径 配置到PATH下
在这里插入图片描述
在这里使用的是第一种,进入该目录/home/song/bin

mkdir bin
touch xsync

脚本内容

#!/bin/bash 
 
#1. 判断参数个数 
# 判断参数是否小于1
if [ $# -lt 1 ]   
then 
    echo Not Enough Arguement! 
    exit; 
fi 

#2. 遍历集群所有机器 
# 对102,103,104都进行分发
for host in hadoop102 hadoop103 hadoop104 
do 
   echo ====================  $host  ==================== 
   #3. 遍历所有目录,挨个发送 
   for file in $@ 
   do 

        #4. 判断文件是否存在 
        if [ -e $file ] 
            then 
                #5. 获取父目录 
                pdir=$(cd -P $(dirname $file); pwd) 
                
                #6. 获取当前文件的名称 
                fname=$(basename $file) 
                ssh $host "mkdir -p $pdir" 
                rsync -av $pdir/$fname $host:$pdir 
            # 如果不存在
            else 
                echo $file does not exists! 
        fi 
    done 
done

给与执行权限
在这里插入图片描述

对于系统文件,分发失败
在这里插入图片描述
使用绝对路径去执行脚本
在这里插入图片描述

### Linux环境下的分发脚本编写与使用 #### 脚本编写的背景 在Linux环境中,批量分发文件是一项常见的需求。通过自动化脚本可以显著提高工作效率,减少手动操作带来的错误风险。以下是基于已有引用内容以及专业知识总结的解决方案。 --- #### 批量分发脚本的实现方法 ##### 创建脚本并赋予执行权限 首先需要创建一个用于批量分发文件的Shell脚本,并为其设置可执行权限。具体命令如下: ```bash touch /usr/shell/scp.sh && chmod 777 /usr/shell/scp.sh ``` 上述命令的作用是创建名为`scp.sh`的脚本文件,并将其权限设置为完全开放模式以便于测试阶段的操作[^1]。 ##### 定义目标主机列表 为了支持多台服务器之间的文件传输,需预先定义一份包含所有目标主机IP地址或域名的配置文件。通常该文件会被命名为`hosts`,其格式类似于以下内容: ```plaintext 192.168.1.101 192.168.1.102 192.168.1.103 ``` 此部分描述来源于实际应用案例中的最佳实践[^2]。 ##### 使用SCP进行文件分发 利用Secure Copy Protocol (SCP) 可以安全地将本地文件复制到远程机器上。下面是一个简单的脚本模板,展示如何遍历`hosts`文件并将指定路径下的文件发送至每台目标设备: ```bash #!/bin/bash HOSTS_FILE="/path/to/your/hosts" SOURCE_DIR="/local/source/directory/" DESTINATION_PATH="/remote/destination/path/" while IFS= read -r host; do echo "Copying files to $host..." scp -r "$SOURCE_DIR"* user@"$host":"$DESTINATION_PATH" done < "$HOSTS_FILE" echo "File distribution completed." ``` 以上代码片段展示了基本逻辑框架,其中涉及循环读取每一行作为独立的目标节点地址,并调用`scp`完成数据迁移过程。 ##### 增强功能:XSYNC工具的应用 对于更复杂的场景或者追求更高性能的需求,则推荐采用专门设计的集群管理工具——如`xsync`。它不仅能够提供比传统`scp`更快的速度,还具备断点续传等功能优势[^3]。 安装步骤可能因系统版本而异,但一般遵循这些原则: 1. 确保已安装必要的依赖项(例如`rsync`); 2. 将官方提供的源码包下载下来解压后按照说明文档指示逐步构建部署即可获得完整的功能集[^4]。 下面是简化版的自定义`xsync`脚本样例供参考: ```bash #!/bin/bash if [[ $# -lt 1 ]]; then echo "Usage: xsync [file|dir]" exit 1 fi TARGET=$1 for HOST in $(cat /etc/xsync_hosts); do rsync -avz --progress "${TARGET}" root@${HOST}:${REMOTE_BASEDIR} done ``` 注意替换变量`${REMOTE_BASEDIR}`为你期望存储位置的实际目录字符串值之前先确认无误后再运行程序以免造成不必要的破坏行为发生。 --- ### 总结 综上所述,无论是基础型还是高级别的方案都能满足不同程度用户的特定用途偏好;初学者可以从简易形式起步逐渐过渡深入探索更多可能性领域内的技术细节知识点等内容资源链接参考资料出处编号分别为^[1]^ ^[2]^ ^[3]^ 和 ^[4]^。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端技术那点事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值