安装依赖
代码语言:javascript复制yum install -y rsync
创建脚本
创建脚本
代码语言:javascript复制mkdir /data/tools/bigdata/mysh/
vi /data/tools/bigdata/mysh/distribution.sh
内容如下
代码语言:javascript复制#!/bin/bash
#集群节点间文件或文件夹分发脚本
USAGE="使用方法:sh distribution.sh /home/test.txt or sh distribution.sh /data/tools/bigdata/hadoop-2.7.7"
if [ $# -ne 1 ];then
echo $USAGE
exit 1
fi
#获取需要分发的文件名或者目录名
FDNAME=$(basename $1)
#获取需要分发的文件或目录的上级目录
PDIR=$(cd -P $(dirname $1);pwd)
#获取当前使用系统的用户名
USER=$(whoami)
#需要分发到的节点
NODES=("hadoop02" "hadoop03")
#循环分发
for NODE in ${NODES[*]};do
echo "--------分发至$NODE--------"
#如果目标节点的父级目录不存在,则创建出来
ssh $NODE "
if [ -d $PDIR ];then
. /etc/profile
else
mkdir $PDIR
fi"
rsync -av $PDIR/$FDNAME $USER@$NODE:$PDIR
done
echo "----------------------------------------------------------------------------------------"
echo -e "-------- 33[5;32m $PDIR/$FDNAME 分发完成! 33[0m--------"
echo "----------------------------------------------------------------------------------------"
修改权限
代码语言:javascript复制chmod 777 /data/tools/bigdata/mysh/distribution.sh
配置环境变量
添加环境变量
代码语言:javascript复制cd /etc/profile.d/
创建配置文件
代码语言:javascript复制vi /etc/profile.d/mysh.sh
加入:
代码语言:javascript复制export MYSH_HOME=/data/tools/bigdata/mysh/
export PATH=$MYSH_HOME:$PATH
配置立即生效
代码语言:javascript复制source /etc/profile
查看MYSH_HOME
代码语言:javascript复制echo $MYSH_HOME
使用
注意
分发前要保证目标所在路径的父路径是存在的
目标安装rsync
代码语言:javascript复制ssh hadoop02 "yum install -y rsync"
ssh hadoop03 "yum install -y rsync"
目标创建文件夹
代码语言:javascript复制ssh hadoop02 "mkdir -p /data/tools/bigdata/"
ssh hadoop03 "mkdir -p /data/tools/bigdata/"
分发Zookeeper
代码语言:javascript复制distribution.sh $ZK_HOME
分发Hadoop
代码语言:javascript复制distribution.sh $HADOOP_HOME
分发Flink
代码语言:javascript复制distribution.sh $FLINK_HOME
分发配置文件
代码语言:javascript复制distribution.sh /etc/profile.d
ssh hadoop02 "source /etc/profile"
ssh hadoop03 "source /etc/profile"
Bash文字样式
示例
代码语言:javascript复制echo -e "E[31;43m 33[4m 我是文字 33[0m"
echo -e "-------- 33[5;32m 分发完成! 33[0m--------"
首先解释E[
,