文件传输
跨虚拟机复制文件
scp
# 从一台虚拟机将文件推送到另一台虚拟机
scp -r /opt/myJDK root@Hadoop103:/opt/myJDK/
# scp===>复制命令
# -r===>递归
# /opt/myJDK===>源文件路径
# root@Hadoop103:/opt/myJDK/===>目的主机用户@主机:目的文件路径
# 因为之前配置过主机映射,所以这里主机直接写了Hadoop103,也可以写192.168.10.103
跨虚拟机同步文件
rsync[推荐使用]
rsync -av /opt/* root@Hadoop104:/opt/
# rsync===>同步命令
# -a===>归档拷贝
# -v===>显示复制过程
# /opt/*===>源路径
# root@Hadoop104:/opt/===>目的用户@主机:目的路径
shell脚本同步文件
#!/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)
# dirname $file===>获取文件路径
# 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
# 执行shell脚本
# sh 源文件目录
# 基与rsync的传输,遍历所有虚拟机,可以全部同步传输
# [yunmoran@hadoop102 hadoop-3.1.3]$ vim /opt/my_shall/my_jps_shall
ssh免密登录
# 找到当前的根目录,可以在最初始的界面直接pwd
# 进入根目录,ll -al显示所有文件,包括隐藏文件
# 找到.ssh的目录,进入.ssh目录
# 进入之后执行
[yunmoran@hadoop102 .ssh]$ ssh-keygen -t rsa # 生成公钥、私钥
# 将公钥复制一份分别到集群中别的虚拟机上
[yunmoran@hadoop102 .ssh]# ssh-copy-id hadoop102 # 这里有几台虚拟机就复制几份,自身也要复制一份
# 连接上之后在Hadoop103上测试
[yunmoran@hadoop102 .ssh]# ssh hadoop103 # 是可以免密码登录的