ssh2-sftp-client 简化 sftp 文件传输的 node库

  • ssh2-sftp-client 极大地简化了通过 sftp 进行文件传输的复杂性。无论你是需要上传、下载、删除文件,还是列出目录内容,可当简易的部署脚步
  • npm run deploy
const SftpClient = require('ssh2-sftp-client')
const sftp = new SftpClient()const config = {host: 'ip',port: '端口号',username: '服务器账号',password: '服务器密码' // 或者使用 privateKey 字段提供私钥路径
}const remoteDir = '/database/nginx/html/TianJin/operation' // 远程目录路径
const newFolderPath = '/database/nginx/html/TianJin/operationBak1' // 重命名后的文件夹新路径(仅改变名称)
// const localDir = 'bak' // 本地保存路径sftp.connect(config).then(() => {console.log('连接成功!')// console.log('开始下载目录...')// return sftp.downloadDir(remoteDir, localDir) // 这里本意想下载到本地进行备份console.log('开始备份文件夹...')// return sftp.rename(remoteDir, newFolderPath) // 重命名文件夹(远程已经有的文件夹名称,会重命名错误)
}).then(() => {// console.log('目录下载成功!')console.log('文件夹备份成功!')console.log('开始上传文件...')sftp.uploadDir('operation', remoteDir).then(() => { //'operation'打包后的文件夹目录,这里js放在同级目录中所以,这里可以只填写文件夹名console.log('文件上传成功!') //这里会直接将远程文件目录覆盖掉,所以前面可以加上备份操作return sftp.end()}).catch((err) => {console.error(err.message)if (sftp.sftp) {sftp.sftp.end()}})
}).catch((err) => {console.error(err.message)if (sftp.sftp) {sftp.sftp.end()}
})

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

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

相关文章

数字美元与全球支付革命:稳定币的兴起与全球金融格局的重塑

一、数字美元的崛起:美国战略布局与全球竞争1. 数字美元的定位与战略意义 数字美元作为美国构建“数字美元帝国”的核心工具,旨在通过区块链技术实现美元的数字化发行与流通,巩固其全球储备货币地位。其核心逻辑在于:技术赋能货币…

LeetCode 633.平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入:c 5 输出:true 解释:1 * 1 2 * 2 5 示例 2: 输入:c 3 输出:false 提示&…

Spring Boot 使用Jasypt加密

一、配置Jasypt 1.在pom.xml中导入依赖 <!-- Jasypt 加密工具 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency&…

【电影剖析】千钧一发

目录 1 人物介绍 2 电影名解读 3 电影开头 3.1 电影开头的两段话 3.2 片头设计 4 电影正文 4.1 “杰罗米”各种诡异的行为 4.2 文森特 – 失败的man 4.3 真正的杰罗米以及假基因身份证 4.4 文森特新征程 4.5 基因人的不容易 4.6 睫毛被查出有问题 4.7 文森特身份初…

论文略读:Arcee’s MergeKit: A Toolkit for Merging Large Language Models

emnlp 2024在过去的一年里&#xff0c;开源大型语言模型&#xff08;LLMs&#xff09;迅速发展&#xff0c;并已可通过 Hugging Face 模型库获取。这些模型的训练规模可达数万亿个 token&#xff0c;参数量通常在 1 亿至 700 亿以上不等开源模型检查点涵盖了多种任务&#xff0…

刀客doc:Netflix与YouTube开始在广告战场正面交锋

01广告一开始并不是Netflix的核心业务&#xff0c;但眼下&#xff0c;广告正逐步成为这家公司与YouTube正面对抗的关键战场。在上周刚发布的Q2财报里&#xff0c;Netflix广告层已覆盖全球12个核心市场&#xff0c;月活跃用户已经逼近9400万&#xff0c;主要集中在CTV渗透率高的…

(四)Unity3d-ROS联合仿真:turtlebot在Unity3d中仿真

运行环境Ubuntu20.04Unity3d 1.下载运行 &#xff08;1&#xff09;项目下载地址&#xff1a; Robotics-Nav2-SLAM-Example 最好执行下面命令能将子模块也下载 git clone --recurse-submodule gitgithub.com:Unity-Technologies/Robotics-Nav2-SLAM-Example.gitgit submodu…

信息学奥赛一本通 1553:【例 2】暗的连锁

【题目链接】 ybt 1553&#xff1a;【例 2】暗的连锁 【题目考点】 1. 树上差分&#xff1a;边差分 类似对差分序列进行修改可以完成对原序列的区间修改。对树上边差分进行修改可以完成对树上一条路径中所有边的边权进行修改。 一条边的差分值为该边的权值减去该边连接的深…

二分查找-852.山峰数组的峰顶索引-力扣(LeetCode)

一、题目解析1.山峰数组数据严格满足arr[0]<arr[1]……<arr[i]>arr[i1]……arr[arr.size()-1]2.时间复杂度要求为O(logN)二、算法解析解法1&#xff1a;暴力解法-O(N)遍历数组arr&#xff0c;结合山峰数组性质&#xff0c;我们发现峰顶存在arr[i]>arr[i-1]&#xf…

高可用架构模式——数据集群和数据分区

目录 一、数据集群 1.1、 数据集中集群 1.2、 数据集中集群的复杂度具体体现 1.3、数据分散集群 1.4、数据分散集群的复杂度具体体现 1.5、数据分散集群和数据集中集群的不同点 二、数据分区 2.1、数据分区架构需要考虑的因素 2.1.1、数据量 2.1.2、分区规则 2.1.3、复制规则 2…

上电复位断言的自动化

POR是所有SoC设计的关键功能序列&#xff0c;其作用是将系统从任意状态恢复至正常状态。任何未被检测到的POR缺陷都可能导致实际芯片中的灾难性后果。复杂数量的重置逻辑给验证工程师带来了更大挑战——他们需要在RTL仿真过程中捕捉这些设计缺陷。随着SoC规模和复杂度的持续增长…

2025 年最新 AI 技术:全景洞察与深度解析​

2025 年最新 AI 技术&#xff1a;全景洞察与深度解析​在科技飞速发展的当下&#xff0c;AI 技术无疑是最耀眼的那颗星&#xff0c;持续为我们的生活与工作带来前所未有的变革。步入 2025 年&#xff0c;AI 技术更是呈现出多点突破、全面开花的态势&#xff0c;下面就为大家深入…

Vue项目中的AJAX请求与跨域问题解析

一、AJAX请求方式对比与选型1. 原生XHR方式基本使用示例&#xff1a;缺点分析&#xff1a;代码冗长复杂回调地狱问题需要手动处理JSON转换错误处理不够直观2. jQuery的AJAX基本使用示例&#xff1a;$.ajax({url: http://localhost:5000/api/data,type: GET,success: function(d…

使用 Longformer-base-4096 进行工单问题分类

简述最近接了对Ticket 进行问题分类的任务&#xff0c;使用了prompt和机器学习两种方式来解决&#xff0c;这里重点介绍Longformer-base-4096 模型训练的方案使用 Longformer-base-4096 模型实现文本分类系统&#xff0c;利用 Longformer 处理长序列的能力进行准确分类。该解决…

Matplotlib和Plotly知识点(Dash+Plotly分页展示)

Matplotlib和Plotly知识点&#xff08;DashPlotly分页展示&#xff09;0、Matplotlib、Plotly和Dash区别 &#xff08;推荐用DashPlotly&#xff09;1.1、Matplotlib &#xff08;静态图&#xff09;1. Figures&#xff08;图形&#xff09;概念创建Figure保存和显示Figure2. S…

YOLO12论文阅读:Attention-Centric Real-Time Object Detectors

文章链接&#xff1a; 2502.12524https://arxiv.org/pdf/2502.12524 摘要 (Abstract)​​ 长期以来&#xff0c;增强 YOLO 框架的网络架构至关重要&#xff0c;但尽管注意力机制在建模能力方面已被证明具有优越性&#xff0c;改进却主要集中在基于 CNN 的方面。这是因为基于…

秋招Day17 - Spring - 事务

Spring事务的种类编程式事务和声明式事务介绍一下编程式事务管理&#xff1f;通过编程的方式显式控制事务的开始、提交和回滚&#xff0c;一般使用TransactionTemplate的execute方法介绍一下声明式事务管理&#xff1f;基于AOP&#xff0c;通过调用代理对象拦截目标方法&#x…

多维基分析求导法则

对于n维点R0(I1,I2,I3,......In)如果到R&#xff08;I1&#xff0c; I2 , I3 ,......,In )有基分析求导定理&#xff1a;即R0 R0 *&#xff08;x1 ,x2 ,x3 ,.............xn) R当I1&#xff0c;I2&#xff0c;....,In独立不能转化时有了独立变量的求导和积分不相干法则…

Java值传递和构造函数

一.Java值传递首先我们来看一串代码&#xff1a;输出 10 20&#xff0c;而不是20 10 这是为什么呢&#xff1f;有内存图可以知道&#xff0c;这个change方法所改变的东西最终没有写回到main之中&#xff0c;且他传的是具体的数据&#xff0c;所以还会输出原数据&#xff0c;就相…

电商项目_秒杀_架构及核心

秒杀架构设计先看下普通web项目架构&#xff1a; &#xff08;Nginx : 反向代理、负载均衡&#xff0c;一般是运维部分做生产搭建的时候配置好&#xff09;秒杀架构设计&#xff1a;和普通架构区别&#xff1a;原先由Web 服务或Nginx服务提供的静态资源放到了CDNNginx的职责放⼤…