99网
您的当前位置:首页实现linux集群文件批量分发

实现linux集群文件批量分发

来源:99网

可以同步文件,也可以同步文件夹

调用命令: xsync 绝对路径 -- 会把路径下的文件(或单个文件)分发到指定机器相同路径下

需配置免密登录

ssh免密配置步骤

生成密钥:ssh-keygen -t rsa [-P ''] [-f '~/.ssh/id_rsa']

复制公钥至远程主机:ssh-copy-id [-i indetify_file ][user@host_ip]

文件分发脚本代码

vim xsync.sh
################
#!/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
chmod +x xsync.sh
xsync $(pwd)

无需配置免密登录,在代码中配置密码,但需要安装expect组件

vim xsync.sh
################
#!/bin/bash


echo "----start----"
for url in 10.51.201.1 10.51.201.2 10.51.201.3;do 
  expect -c "
    spawn sftp root@${url}
	expect {
	  \"yesy/no\" {send \"yes\r\";exp_continue;}
	  \"'s password:\" {set timeout 100;send \"Tansun123\r\";continue}
	  \"sftp\" {send \"cd /hdpctm\r\";send \"ls\r\";send \"get /hdpctm/hdptest.sh ./\r\";send \"exit\r\"}
	}
	expect eof
  "
  echo "sftp ${url} success!"
done
echo "----end----"
####################3
chmod +x xsync.sh
xsync $(pwd)

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容