05 多linux通信

1 scp

scp可以实现服务器与服务器之间的数据拷贝。

(1)将hadoop101中/opt/module和/opt/software文件拷贝到hadoop102、hadoop103和hadoop104上。

[root@hadoop101 /]# scp -r /opt/module/  root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop102:/opt
[root@hadoop101 /]# scp -r /opt/module/  root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop103:/opt
[root@hadoop101 /]# scp -r /opt/module/  root@hadoop104:/opt
[root@hadoop101 /]# scp -r /opt/software/  root@hadoop105:/opt

(2)将192.168.1.102服务器上的文件拷贝到当前用户下。

[root@hadoop101 opt]# scp root@hadoop102:/etc/profile  /opt/tmp/

(3)实现两台远程机器之间的文件传输(hadoop103主机文件拷贝到hadoop104主机上)

[atguigu@hadoop102 test]$ scp atguigu@hadoop103:/opt/test/haha atguigu@hadoop104:/opt/test/

2 SSH无密码登录

使用ssh登录另一台linux电脑

基本语法: ssh 另一台电脑的ip地址

这种方式需要输入用户名/密码

一、无密码配置
(1)进入到我的home目录

cd  ~/.ssh

(2)生成公钥和私钥:

ssh-keygen -t rsa   
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(3)将公钥拷贝到要免密登录的目标机器上

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

说明:包括自己在内3台机器都要相互ss-copy-id

二、.ssh文件夹下的文件功能解释

(1)~/.ssh/known_hosts	:记录ssh访问过计算机的公钥(public key)
(2)id_rsa	:生成的私钥
(3)id_rsa.pub	:生成的公钥
(4)authorized_keys	:存放授权过得无秘登录服务器公钥

三、无密码访问原理

A机器生成公私钥对,并将公钥放入到B机器上;
当A使用ssh访问B,使用私钥加密数据,B机器拿到数据后,用的A机器的公钥进行解析;
B返回数据时,使用A的公钥加密数据发送给A机器

3 rsync

rsync远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

注意:rsync只增不减,比如A服务有文件[1、2、3]; B服务器有文件[2、3、4]。那么,A服务的文件1不会删除,文件内容不一样,同步,同时增加文件4。

(1)查看rsync使用说明
    man rsync | more
(2)基本语法
    rsync -rvl     $pdir/$fname         $user@hadoop$host:$pdir
	命令  命令参数    要拷贝的文件路径/名    目的用户@主机:目的路径
	
   选项
    -r 递归
    -v 显示复制过程
    -l 拷贝符号连接

(3)案例实操
   把本机/opt/tmp目录同步到hadoop103服务器的root用户下的/opt/tmp目录
   rsync -rvl /opt/tmp/*  root@hadoop103:/opt/tmp

4 编写集群分发脚本

在/usr/local/bin这个目录下存放的脚本,可以在系统任何地方直接执行,需要制定路径。

4.1 循环复制文件到所有节点的相同目录下

(1)原始拷贝:rsync -rvl /opt/module root@hadoop103:/opt/

(2)期望脚本:xsync 要同步的文件名称

#!/bin/bash

# 1.获取输入参数个数,如果没有参数,直接退出
paramCount=$#
if((paramCount==0)); then
echo no args;
exit;
fi

# 2.获取文件名称
p1=$1
# basename 获取最后一个/后面的值,比如basename /usr/local/bin  输入 bin
fname=`basename $p1`
echo fname = $fname

# 3.获取上级目录的绝对路径
# dirname获取最后一个/之前的路径
# 用-P ,如果是软连接,直接获取真实文件的路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

# 4.获取当前用户名称
user=`whoami`

# 5.循环
for((host=100; host<103; host++)); do
   echo -----------hadoop$host----------
   rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

使用:xsync /opt/tmp

4.2 在所有主机上同时执行相同的命令

#!/bin/bash
paramCount=$#

if((paramCount==0)); then
    echo no arg;
    exit;
fi

echo --------localhost-----

# 获取输入命令后面的参数
$@

for ((host=100; host<=102; host++));do
    echo ---------hadoop$host---------
    ssh hadoop$host $@
done

使用:xcall mkdir /opt/tmp2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值