当前位置: 首页 > news >正文

Linux的scp、rsync、以及集群分发脚本、ssh配置免密登录

  • scp 命令
    scp 命令用于拷贝多个文件,尤其是可以跨服务器传输。
scp -r  source destination

scp -r ./a/* admin@192.168.7.121:/opt/

注意:如果是想把某个目录下所有的文件都拷贝过去,要加一个*
在这里插入图片描述
如果想把a目录下的所有内容,拷贝到b目录下,则要
scp -r ./a/* /b/

否则如果不加*,则会在b下先生成一个a目录。

  • rsync 同步命令,主要也是增量同步两台服务器之前的文件变化(主要是根据文件的大小以及最后修改日期决定的。这个命令可以将文件的元数据信息一并同步)。
rsync -av source destination

在这里插入图片描述
还是以a和b这两个目录来说明,执行

rsync -av ./a ./b

以上的结果是b目录先多了a目录,a目录下面才是真正的文件,如果想要达到a目录下的文件直接复制到b目录下,不带有a这层目录的话需要在后面加 /或者/*。

rsync -av ./a/ ./b
rsync -av ./a/* ./b

加上这个/或者/*就达到以上的效果了,这里还是和scp有一点区别的。

注意destination,如果目标路径是以文件夹结尾,则会拷贝到这个文件夹下,如果不是以文件夹结尾,则会默认当成要拷贝的新文件名。这点和cp与mv命令比较像。

rsync -av /opt/a/ root@192.168.137.128:/opt/b/
  • 集群脚本分发

编写一个脚本,实现所有集群主机的文件同步

#!/bin/bash

#验证参数
if [ $# -lt 1 ]
then 
	echo "必须指定一个分发文件"
	exit
fi

for server in hadoop121 hadoop122 hadoop123
do
	echo "=================$server==================="
	#内层循环继续遍历参数
	for file in $@
	do
  	if [ -e file ]
  	then
      #获取父目录    	
    	pdir=$(cd -P dirname $file;pwd)
    	#获取当前文件名称
    	fname=$(basename $file)
    	#这里ssh没有指定用户,则就是当前的终端登录用户
    	ssh $server "mkdir -p $pdir"
    	#使用rcync命令进行分发,
    	rsync -av $pdir/$file $server:$pdir
  	else
    	#文件不存在
    	echo "$file 文件不存在"
  	fi
	done
done

  • ssh免密登录

ssh免密登录的实现

A服务器要想与B服务器实现免密登录,两台服务器必须都要保存A服务器的公钥,当A服务器使用私钥进行加密后向B服务器,B服务器去授权Key中查找是否有A服务器的公钥如果有,则直接解密,那么当B服务器向A服务器发送消息时,需要使用A服务器的公钥,A服务器接收到消息以后,再使用私钥解密即可。

在这里插入图片描述

配置ssh步骤:

  • 进入到A服务的用户家目录,执行 ls -al,可以看到有个隐藏的.ssh文件

  • 执行 ssh-keygen -t rsa

执行完这条命令以后会生成 id_rsa以及id_rsa.pub

  • 将公钥发送给需要免密登录的服务器

ssh-copy-id 192.168.137.128

实现完这一步以后,当前配置的这个用户,就可以向目标服务器实现免密登录了,注意,如果是免密登录自己服务器,也需要执行以后 ssh-copy-id。

相关文章:

  • 【计算机视觉 | 目标检测】锚点预匹配(Anchor pre-matching)的理解
  • 智联物联分享之物联网协议MQTT简述,MQTT协议特点
  • Echarts立体柱状图
  • SpringBoot定时任务@Scheduled注解详解
  • Gen-LaneNet论文精读总结
  • Spring Cloud Alibaba全家桶——微服务网关Gateway组件
  • 基于微信PC端小程序抓包方法
  • SQL Server 实现邮件发送功能(配置步骤及存储过程源码)
  • 刘禹锡最经典诗文10首,每一首都是千古名作,读懂受益一生
  • mybatisplus快速实现动态数据源切换
  • Vue-条件渲染的基本使用(v-if,v-show,v-else相关指令使用)
  • PMP项目管理认证第一节(备考阶段准备)
  • 【数据结构】TopK,堆排序, --堆的初始化与应用
  • 自然语言处理: 知识图谱的十年
  • 关于加解密、加签、验签等
  • ES6指北【2】—— 箭头函数
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 07.Android之多媒体问题
  • Angular数据绑定机制
  • codis proxy处理流程
  • extjs4学习之配置
  • Java编程基础24——递归练习
  • Nacos系列:Nacos的Java SDK使用
  • PAT A1120
  • Spring-boot 启动时碰到的错误
  • vue脚手架vue-cli
  • ------- 计算机网络基础
  • 解析带emoji和链接的聊天系统消息
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 物联网链路协议
  • 硬币翻转问题,区间操作
  • MyCAT水平分库
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​第20课 在Android Native开发中加入新的C++类
  • (1)bark-ml
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Oracle)SQL优化技巧(一):分页查询
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (九)c52学习之旅-定时器
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (区间dp) (经典例题) 石子合并
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • @Autowired和@Resource的区别
  • @DataRedisTest测试redis从未如此丝滑
  • @font-face 用字体画图标
  • @ModelAttribute 注解
  • [.net] 如何在mail的加入正文显示图片
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution