diff --git a/src/backups.js b/src/backups.js index 3ebb715ac..4f598633d 100644 --- a/src/backups.js +++ b/src/backups.js @@ -526,13 +526,7 @@ function snapshotBox(callback) { log('Snapshotting box'); - var password = config.database().password ? '-p' + config.database().password : '--skip-password'; - var mysqlDumpArgs = [ - '-c', - `/usr/bin/mysqldump -u root ${password} --single-transaction --routines \ - --triggers ${config.database().name} > "${paths.BOX_DATA_DIR}/box.mysqldump"` - ]; - shell.exec('backupBox', '/bin/bash', mysqlDumpArgs, { }, function (error) { + database.exportToFile(`${paths.BOX_DATA_DIR}/box.mysqldump`, function (error) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); return callback(); diff --git a/src/database.js b/src/database.js index d1fcc1665..eabb99702 100644 --- a/src/database.js +++ b/src/database.js @@ -11,6 +11,7 @@ exports = module.exports = { commit: commit, importFromFile: importFromFile, + exportToFile: exportToFile, _clear: clear }; @@ -199,3 +200,14 @@ function importFromFile(file, callback) { child_process.exec.bind(null, cmd) ], callback); } + +function exportToFile(file, callback) { + assert.strictEqual(typeof file, 'string'); + assert.strictEqual(typeof callback, 'function'); + + var password = config.database().password ? '-p' + config.database().password : '--skip-password'; + var cmd = `/usr/bin/mysqldump -u root ${password} --single-transaction --routines \ + --triggers ${config.database().name} > "${file}"`; + + child_process.exec(cmd, callback); +}