我是NodeJS的新手,我必须编写用于将mongoDB数据备份到json文件的脚本,以便备份大小应该更少。 目前我正在获取BSON格式的数据,即大文件。
'use strict';
/**
* @file callback example
* @module mongodb-backup
* @subpackage examples
* @version 0.0.1
*/
/*
* initialize module
*/
let AWS = require('aws-sdk');
let fs = require('fs');
let credential = {
accessKeyId: '',
secretAccessKey: '',
region: '',
bucketname: ''
};
AWS.config.update(credential);
let s3 = new AWS.S3({
params: {
Bucket: credential.bucketname
}
});
let backup = require('mongodb-backup'); // use require('mongodb-backup') instead
let username = process.argv[2],
password = process.argv[3],
ip = process.argv[4],
port = process.argv[5],
dbName = process.argv[6];
let schedule = require('node-schedule');
let usernameAndpassword;
let ipAndport = ip + ':' + port;
console.log('***Please wait***');
console.log('***Process might take sometime depending on DB size and your connection***');
if (username) {
if (password) {
usernameAndpassword = username + ':' + password;
}
} else {
usernameAndpassword = null;
}
console.log('you are pointing to :',ipAndport)
let urL;
if (usernameAndpassword) {
urL = 'mongodb://' + usernameAndpassword + '@' + ipAndport + '/' + dbName;
} else {
urL = 'mongodb://' + ipAndport + '/' + dbName;
}
let collectionName = [];
for (let i = 7; i >= 7 && i < 50; i++) {
if (process.argv[i])
collectionName.push(process.argv[i]);
}
let date = new Date();
let day = ("0" + date.getDate()).slice(-2).toString(),
month = ("0" + (date.getMonth() + 1)).slice(-2).toString(),
year = date.getFullYear().toString();
let fileName = day + month + year + '.tar';
if (urL) {
var j = schedule.scheduleJob('0 28 09 * * 0-5', function () {
backup({
uri: urL,
root: __dirname, // write files into this dir
tar: fileName,
callback: function (err) {
if (err) {
console.error(err);
} else {
fs.readFile(fileName, 'utf-8', function (error, result) {
let params = {
Key: fileName,
Body: result,
ACL: 'public-read'
}
s3.upload(params, function (err, data) {
if (!err) {
fs.unlink('./' + fileName, function (err, res) {
s3.getSignedUrl('getObject', {
Key: params.Key,
Expires: 1200
}, function (err, data) {
console.log('Backup complete , you can download it from here - ', data)
});
})
}
});
})
}
}
});
});
}