1、问题描述
搭建hadoop写分发脚本,执行时发生rsyn错误
2、分发脚本内容
#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2、遍历集群所有的机器
for host in hadoop102 hadoop103 hadoop104
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
3、原因分析
执行分发脚本 ,分发的文件test.txt是在用户root的文件夹opt下的,而执行脚本的用户是xiaotang,这时会发生错误
重新在用户xiaotang的文件夹software下,用户xiaotang执行分发脚本成功