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

发布于:2025-07-24 ⋅ 阅读:(31) ⋅ 点赞:(0)
  • 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()
  }
})

网站公告

今日签到

点亮在社区的每一天
去签到