Linux多台服务器配置分发脚本xsync 免密登录

#先配置免密登录

ssh-keygen -t rsa -P ''

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop01
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop02
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop03

#同样操作 本身服务器也要copy一份



#xsync.sh文件

#!/bin/bash
# 文件名: xsync.sh
# 功能: 在Hadoop集群中分发文件/目录到多个节点
# 使用方法: ./xsync.sh <文件或目录1> [文件或目录2] ... [文件或目录N]

# 1. 判断参数个数
if [ $# -lt 1 ]; then
    echo "错误: 参数不足!"
    echo "使用方法: $0 <文件或目录1> [文件或目录2] ..."
    exit 1
fi

# 2. 遍历集群所有机器
# 注意: 请根据您的实际环境修改主机名列表
for host in hadoop01 hadoop02; do
    echo "================== $host =================="
    
    # 3. 遍历所有输入的文件/目录
    for file in "$@"; do
        # 4. 判断文件/目录是否存在
        if [ -e "$file" ]; then
            # 5. 获取父目录的绝对路径
            pdir=$(cd -P "$(dirname "$file")" && pwd)
            
            # 6. 获取当前文件/目录的名称
            fname=$(basename "$file")
            
            # 7. 在远程主机上创建父目录
            ssh "$host" "mkdir -p '$pdir'"
            
            # 8. 使用rsync同步文件/目录
            echo "正在同步: $file -> $host:$pdir"
            rsync -av "$pdir/$fname" "$host:$pdir"
        else
            echo "警告: 文件/目录 '$file' 不存在,已跳过"
        fi
    done
done

echo "========================================="
echo "分发完成!"





在 用户当前目录配置  vim .bashrc  配置如下

alias xsync='/home/hadoop/xsync.sh'
  

  

posted @ 2025-12-20 16:40  ARYOUOK  阅读(2)  评论(0)    收藏  举报