顶部横幅广告
  • 微信
您当前的位置:首页 > 技术学习 > 随心学习

服务器之间的数据传输——脚本分发

作者:石德生 时间:2022-04-24 阅读数:人阅读文章来源:原创内容

前面有提到服务器之间的数据传输的直接方式,但是效率还是过于低。因为每次只能发给一台,而使用脚本可以同时将某个文件发送给多台服务器。只需要输入密码,还可以使用免密通信。

这边测试基础条件:服务器已经修改主机名和hosts,并且将主机名与ip地址一一对应。

例如在家目录新建一文件目录为bin在里面新建名为xsync文件,内容如下:

#! /bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
    echo No Enough Arguement!
    exit;
fi
 
#2. 遍历集群所有机器
for host in hadoop02 hadoop03 
do
    echo ====================    $host    ====================
    #3. 递归遍历所有目录
    for file in $@
    do
        #4 判断文件是否存在
        if [ -e $file ]
        then
            #5. 获取全路径
            pdir=$(cd -P $(dirname $file); pwd)
            echo pdir=$pdir
            
            #6. 获取当前文件的名称
            fname=$(basename $file)
            echo fname=$fname
            
            #7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
            ssh $host "source /etc/profile;mkdir -p $pdir"
            
            #8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
            rsync -av $pdir/$fname $USER@$host:$pdir
        else
            echo $file Does Not Exists!
        fi
    done
Done

文本中hadoop01和hadoop02按自己的服务器主机名修改。保存并退出后,使用以下命令修改权限为777。

chmod 777 xsync

回到家目录,使用 xsync bin/ 回车之后需要输入yes和两遍密码。即可完成内容分发。并且可以在hadoop02和hadoop03内看到bin文件夹。

 

服务器之间的免密通信

回到家目录之后进入.ssh目录,如果没有该文件,可以使用ssh localhost命令生成。

第一步:使用以下命令生成公钥和私钥

ssh-keygen -t rsa

服务器之间的数据传输——脚本分发 

第二步:提供公钥

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop02

第三步:使用ssh连接测试

ssh hadoop02

输入exit退出连接。同理可使用相同的方式免密连接其它机器。

本站部分文章、数据、图片来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:1737618317@qq.com

标签:
微信

石德生

当你还撑不起你的梦想时,就要去奋斗。如果缘分安排我们相遇,请不要让她擦肩而过。我们一起奋斗!

微信
上云折上折

猜你喜欢

    无相关信息