一、rsync分发文件时失败
vim xsync //创建脚本
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop01 hadoop02 hadoop03
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
该脚本主要用来在三台虚拟机之间互传文件和配置的环境,这样就只用在一台上配置然后分发给其他两台就行,节省了大量时间的精力。
但是当我们开始分发文件时,往往会报错:
可以看出hadoop01成功分发,而02和03没有成功,这种错误一般是由于没有rsync环境导致的。
要保证三台集群都有rsync的环境,没有的可以通过以下命令安装:
yum install -y rsync
当环境都搭建好之后再运行就可以了。
注意:我的是root账户,如果是其他账户还要对分发的文件赋权,一般命令为
chmod +X 文件名
的是root账户,如果是其他账户还要对分发的文件赋权,一般命令为
chmod +X 文件名
脚本文件一般放在全局环境下,root账户放在/root/bin/目录下,其他账户放在/home/账户名/bin/目录下。