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'
自动化学习。

浙公网安备 33010602011771号