服务器之间的数据传输——脚本分发
前面有提到服务器之间的数据传输的直接方式,但是效率还是过于低。因为每次只能发给一台,而使用脚本可以同时将某个文件发送给多台服务器。只需要输入密码,还可以使用免密通信。
这边测试基础条件:服务器已经修改主机名和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