如果没有运维人员或运维软件,但是又面临在一个集群中分发一些文件,使用 scp 或者是 rsync 命令执行多次可以解决问题,那这里以 rsync 命令为基础,起一个简单的一次性分发脚本。
0、确保脚本所在的机器能够免密登录到集群其他机器
1、将集群的IP都写入一个文件中
touch /root/hosts 创建一个空文件
vi /root/hosts 分行输入集群中所有机器的IP
2、编写分发脚本
touch /root/xsync.sh
vi /root/xsync.sh 输入下面的脚本代码
#!/bin/bash
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin"
for i in $(cat /root/hosts);do
rsync -avP $1 $i:$1 &> /dev/null
if [[ $? -eq 0 ]];then
echo "rsync -avP $1 $i:$1 -- ok"
else
echo "rsync -avP $1 $i:$1 -- failed"
fi
done
如果机器数量少,可以替换第三行语句为
for i in hadoop101 hadoop102 hadoop103;do hadoop101是Hosts中配置的IP映射
如果机器IP配置的映射名有规律,也可以替换第三行语句为
for((i=101; i<104; i++));do
同时后面的 $i 替换为 hadoop$i
3、测试
/root/xsync.sh /root/test 会把test同步到其余的机器的/root目录下
最后呢,这个脚本还可以继续完善,比如添加参数校验、支持相对路径等功能。