node调用mongodump实现对mongo数据库的备份,并将备份结果压缩为zip

场景描述

node调用mongodump实现对mongo数据库的备份,并将备份结果压缩为zip,可以设置query条件限制备份的数据范围

解决方案

const cp = require('child_process')
const path = require('path')

const iconv = require('iconv-lite')
const { zip } = require('zip-a-folder')

const TEMP_PATH = 'temp'
const targetPath = path.join(path.resolve(__dirname), TEMP_PATH)

test()
async function test () {
  const dbname = 'dbname'
  const cmd = `mongodump -h 127.0.0.1 -d ${dbname} -o ${targetPath}`
  console.log('导出')
  cp.execSync(cmd, { encoding: 'buffer'}, (err, stdout, stderr) => {
    if (err) {
      console.log(err)
    }
    stdout = iconv.decode(stdout, 'gbk')
    stderr = iconv.decode(stderr, 'gbk')
    console.log(stdout)
    console.log(stderr)
  })
  console.log('压缩')
  await zip(targetPath, `./${dbname}.zip`)
  console.log('压缩完成')
}

参考文档

https://docs.mongodb.com/manual/reference/program/mongodump/

https://stuk.github.io/jszip/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值