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

108 阅读1分钟

场景描述

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('压缩完成')
}

参考文档

docs.mongodb.com/manual/refe…

stuk.github.io/jszip/