SFTP连接、创建多级目录、传文件

SFTP连接、创建多级目录、传文件

  • SFTP连接
  • 创建目录(逐级)
  • 传输文件
  • SFTP常用命令

通过FTP或SFTP传输指定格式的数据文件也是常见的需求,本文简单介绍一下常用的SFTP方法,另外需要注意的是,文中涉及的代码全都是在SpringBoot 服务中运行的。

SFTP连接

首先,需要导入依赖

<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version>
</dependency>

创建SFTP连接

public class SftpUtil{@Value("host")private String host;@Value("port")private String port;@Value("userName")private String userName;@Value("passWord")private String passWord;@Value("filePath")private String filePath;@Value("folder")private String folder;/***@description: 创建SFTP连接*@date: 2023/6/21 16:20*@param: [userName, passWord, host, port]*@return: com.jcraft.jsch.ChannelSftp*/private ChannelSftp setUpJsch(String userName,String passWord,String host,Integer port) throws JSchException {JSch jsch = new JSch();jsch.setKnownHosts("/home/srcu/.ssh/known_hosts");//找到自己服务器上的known_hosts文件路径Session jschSession = jsch.getSession(userName,host,port);//创建Session对象jschSession.setPassword(passWord);//设置密码jschSession.connect();//连接SFTPreturn (ChannelSftp) jschSession.openChannel("sftp");//返回ChannelSftp对象}
}

创建目录(逐级)

逐级进入指定目录,若目录不存在,则创建目录

	/***@description: 逐级进入目录,若目录不存在则创建目录*@date: 2023/6/21 16:23*@param: [dirs, tempPath, length, index, sftp]*@return: void*/public void mkdirDir(String[] dirs, String tempPath, int length, int index, ChannelSftp sftp){//分割romoteDir后,首位为"",故而下标从1开始index++;if(index<length){//目录不存在,创建文件夹tempPath += "/" + dirs[index];}logger.info("检查目录 <" + tempPath + "> 是否存在");try {sftp.cd(tempPath);if (index < length){mkdirDir(dirs,tempPath,length,index,sftp);}} catch (SftpException e) {logger.info("创建目录 <" + tempPath + ">");try {sftp.mkdir(tempPath);//创建目录sftp.cd(tempPath);//进入目录} catch (SftpException e1) {e1.printStackTrace();logger.info("创建目录 <" + tempPath + ">失败,异常信息:{" + e1.getMessage() + "]");}mkdirDir(dirs,tempPath,length,index,sftp);}}

传输文件

使用获取到ChannelSftp对象,进入目标目录,并传输文件到目标目录下

	/***@description: 上传文件到SFTP服务器*@date: 2023/6/21 16:25*@param: [userName, passWord, host, port, folder, filePath, fileName]*@return: void*/public void uploadFileUsingJsch(String userName,String passWord,String host,Integer port,String folder,String filePath,String fileName) throws JSchException, SftpException{ChannelSftp channelSftp = setUpJsch(userName,passWord,host,port);//获取ChannelSftp对象channelSftp.connect();//连接SFTPString localFile = filePath + fileName;//本地文件路径+文件名String remoteDir = folder + "TARGET/";//目标文件路径String dirs[]= remoteDir.split("/");mkdirDir(dirs,"",dirs.length,0,channelSftp);//逐级进入目录,无目录则创建目录channelSftp.put(localFile, remoteDir+fileName);//传文件channelSftp.exit();//退出SFTP服务器}

上述介绍的三个部分,都是SftpUtil类中的工具方法。
这三部分也是SFTP传输功能的核心逻辑。

SFTP常用命令

登录

sftp username@host
# 例:
sftp oracle@192.168.0.1

移除空文件夹

rmdir folder

删文件

rm fileName

传文件

put localPath/localFileName.txt remotePath/remoteFileName.txt

下载文件

get kcfb_cust_sign.OK localPath/#当前远程路径下文件下载到本地路径下

切换本地路径

lcd /srcu/webboot/ #切换本地路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Simplex and Duplex connector(单工和双工连接器)

Simplex and Duplex connector 正文 正文 在阅读一些英文资料的时候&#xff0c;遇到了一个说明方式&#xff0c;叫做 Simplex 和 Duplex Connector。中文翻译过来就是单工和双工连接器。单工连接器的含义是&#xff0c;比如对于一个光纤&#xff0c;它的末端有一个连接器的就…

如何配置MacLinuxWindows环境变量

这里写目录标题 什么是环境变量什么是PATH为什么要配置环境变量 如何配置环境变量环境变量有哪些环境变量加载顺序环境变量加载详解 配置参考方法一&#xff1a; export PATHLinux环境变量配置方法二&#xff1a;vim ~/.bashrcLinux环境变量配置方法三&#xff1a;vim ~/.bash_…

go语言基础之泛型

1.泛型 泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型。 1.1 为什么需要泛型 func reverse(s []int) []int {l : len(s)r : make([]int, l)for i, e : range s {r[l-i-1] e}return r }fmt.Println(reverse…

红外热成像仪定制_热成像仪/红外夜视仪开发方案

红外热成像技术是一种利用红外热成像仪将物体发出的不可见红外辐射能量转换成可见的温度场图像的技术&#xff0c;通过不同颜色来表示不同温度。这项技术的应用领域非常广泛&#xff0c;从电路维修到暖通检测再到汽车故障排查等各个领域都有着重要的作用。 红外热成像仪的解决方…

虾皮API助力电商行业高效商品管理

一、引言 随着电商行业的飞速发展&#xff0c;商品管理成为了电商企业面临的重要挑战之一。传统的商品管理模式往往效率低下&#xff0c;难以满足现代电商市场的快速变化和个性化需求。为了解决这一问题&#xff0c;虾皮API应运而生&#xff0c;为电商行业带来了高效商品管理的…

【C++】构造函数

前言 在C语言中&#xff0c;当我们定义了一个结构体时&#xff0c;通常需要编写一个函数来初始化它&#xff0c;否则在创建结构体变量时容易忘记调用初始化函数&#xff0c;导致程序出错。但在C中&#xff0c;我们将不会有这样的烦恼&#xff0c;前提是编写了正确的构造函数。…

整数流理论

目录 一&#xff0c;k流 二&#xff0c;整数流 三&#xff0c;四色问题 一&#xff0c;k流 Tutte在研究四色问题时&#xff0c;开创了整数流理论。 他研究的具体问题是&#xff0c;给定一个有向图和一个k阶交换群&#xff0c;能不能找到一个函数&#xff0c;把图的每个边映…

SpringBoot项目实现热部署的配置方法

SpringBoot项目实现热部署的配置方法 1、什么是热部署&#xff1f; 热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。 2、什么是SpringBoot热部署&#xff1f; SpringBoot热部署就是在项目正在运行的时候修改代码, 却不需要重新启动…

PCB的通孔,盲孔,埋孔

通孔&#xff1a;双层板从顶层到底层的打通&#xff0c;这样电流就能够从顶层到底层 盲孔&#xff1a;因为看不到底&#xff0c;像一口井一样&#xff0c;只能打到中间&#xff0c;里面灌上铜&#xff0c;我们可以从第一层切换到第二层&#xff0c;第三层等等&#xff0c;盲孔…

在Windows上安装与配置Apache服务并结合内网穿透工具实现公网远程访问本地内网服务

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

[React源码解析] Fiber

在React15及以前, Reconciler采用递归的方式创建虚拟Dom, 但是递归过程不可以中断, 如果组件的层级比较深的话, 递归会占用线程很多时间, 那么会造成卡顿。 为了解决这个问题, React16将递归的无法中断的更新重构为异步的可中断更新, Fiber架构诞生。 文章目录 1.Fiber的结构2…

【mysql把一个字段分割成两个字段】

需求: 用sql语句把一个字段分割成两个字段 idnameold_string1张三张三房间1 类似这样 要把old_string分割成id和name UPDATE table_name setname substr(old_string,1,2),id substr(old_string,locate(房间,old_string)1,1);locate(房间,old_string)//房间这个指定字符串…

【blender烘焙】法线烘焙出现大面积结构丢失怎么办?blender烘焙vs八猴烘焙

用dcc烘焙法线是很常用的减面优化手段&#xff0c;很多建模的dcc自己也内置的烘焙的功能&#xff0c;像我自己在工作流中也偶尔用blender的烘焙做一下材质的整合优化&#xff0c;在质量要求不高的时候还算凑合可用。 问题描述 在前期的文章中飞燕2号建模&#xff0c;我就遇到…

数据防泄密方案公司(dlp数据防泄密厂商排名)

在当今数字化时代&#xff0c;数据已经成为了企业最重要的资产之一。然而&#xff0c;随着企业信息化的不断深入&#xff0c;数据泄露的风险也越来越大。为了保护企业的核心数据&#xff0c;越来越多的企业开始重视数据防泄密工作&#xff0c;并寻求专业的数据防泄密方案提供商…

LeetCode——415. 字符串相加

C开头 &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#…

可解释性AI(XAI)的兴起

在今天这个科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的每一个角落。从智能家居到自动驾驶&#xff0c;从个性化推荐到医疗诊断——AI的决策过程在很多情况下&#xff0c;对我们的日常生活产生着重大影响。然而&#xff0c;这些复杂…

JavaSE-

1. Lambda 表达式 1.1 概述 Lambda表达式是一种没有名字的函数&#xff0c;也可称为闭包&#xff0c;是java8发布的最重要的新特性。 本质上是一段匿名内部类&#xff0c; 也可以是一段可以传递的代码&#xff0c;lambda表达式也被叫做箭头函数。 闭包: 闭包就是能够读取其它函…

如何回话与技巧

1、领导关心 谢谢领导关心&#xff0c;我从中学到了很多&#xff0c;如果有做的不好的方面&#xff0c;还请您多多指点。 2、领导问你忙不忙时 领导有什么工作您安排&#xff0c;如果急的话&#xff0c;我优先处理。 3、安排超过能力时 谢谢您的信任&#xff0c;虽然这件事对…

俄罗斯方块游戏设计文档(基于C语言)

1. 引言 本设计文档旨在详细规划基于C语言开发的俄罗斯方块游戏的整体架构、功能模块以及具体实现步骤。这款游戏将通过控制下落的几何形状方块&#xff0c;以填充和消除行的方式进行&#xff0c;旨在提供用户友好的界面与流畅的游戏体验。 2. 需求分析 2.1 核心元素 - 方块…

【计网·湖科大·思科】实验五 IPV4地址-分类地址和构建超网

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…