Refactor mongodump command

Noah Zalev committed Jul 6, 2021 at 23:59 UTC 53d837a05205f57d232a33298bb8ad986afba418
1 file changed +21 -9
db.js
+21 -9
@@ -1647,6 +1647,20 @@ module.exports.CreateDB = function (parent, func) {
1647 return cmd;
1648 }
1649
1650 + function buildMongoDumpCommand() {
1651 + const dburl = parent.args.mongodb;
1652 +
1653 + var mongoDumpPath = 'mongodump';
1654 + if (parent.config.settings.autobackup && parent.config.settings.autobackup.mongodumppath) {
1655 + mongoDumpPath = parent.config.settings.autobackup.mongodumppath;
1656 + }
1657 +
1658 + var cmd = '"' + mongoDumpPath + '"';
1659 + if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\"'; }
1660 +
1661 + return cmd;
1662 + }
1663 +
1664 // Check that the server is capable of performing a backup
1665 obj.checkBackupCapability = function (func) {
1666 if ((parent.config.settings.autobackup == null) || (parent.config.settings.autobackup == false)) { func(); }
@@ -1655,11 +1669,8 @@ module.exports.CreateDB = function (parent, func) {
1669 var backupPath = parent.backuppath;
1670 if (parent.config.settings.autobackup && parent.config.settings.autobackup.backuppath) { backupPath = parent.config.settings.autobackup.backuppath; }
1671 try { parent.fs.mkdirSync(backupPath); } catch (e) { }
1658 - const dburl = parent.args.mongodb;
1659 - var mongoDumpPath = 'mongodump';
1660 - if (parent.config.settings.autobackup && parent.config.settings.autobackup.mongodumppath) { mongoDumpPath = parent.config.settings.autobackup.mongodumppath; }
1661 - var cmd = '"' + mongoDumpPath + '"';
1662 - if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\"'; }
1672 +
1673 + var cmd = buildMongoDumpCommand();
1674 cmd += (parent.platform == 'win32') ? ' --archive=\"nul\"' : ' --archive=\"/dev/null\"';
1675 const child_process = require('child_process');
1676 child_process.exec(cmd, { cwd: backupPath }, function (error, stdout, stderr) {
@@ -1836,11 +1847,12 @@ module.exports.CreateDB = function (parent, func) {
1847 // Perform a MongoDump backup
1848 const newBackupFile = 'mongodump-' + fileSuffix;
1849 var newBackupPath = parent.path.join(backupPath, newBackupFile);
1839 - var mongoDumpPath = 'mongodump';
1840 - if (parent.config.settings.autobackup && parent.config.settings.autobackup.mongodumppath) { mongoDumpPath = parent.config.settings.autobackup.mongodumppath; }
1850 +
1851 + var cmd = buildMongoDumpCommand();
1852 + cmd += (dburl) ? ' --archive=\"' + newBackupPath + '.archive\"' :
1853 + ' --db=\"' + dbname + '\" --archive=\"' + newBackupPath + '.archive\"';
1854 +
1855 const child_process = require('child_process');
1842 - var cmd = '\"' + mongoDumpPath + '\" --db=\"' + dbname + '\" --archive=\"' + newBackupPath + '.archive\"';
1843 - if (dburl) { cmd = '\"' + mongoDumpPath + '\" --uri=\"' + dburl + '\" --archive=\"' + newBackupPath + '.archive\"'; }
1856 var backupProcess = child_process.exec(cmd, { cwd: backupPath }, function (error, stdout, stderr) {
1857 try {
1858 var mongoDumpSuccess = true;