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;