文件传输

跨虚拟机复制文件

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 xsync.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 # 是可以免密码登录的
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐