iobroker.backitup
Version:
ioBroker.backitup allows you to backup and restore your ioBroker installation and other systems, such as databases, Zigbee, scripts and many more.
84 lines (70 loc) • 2.44 kB
JavaScript
// targz for Backup and Restore
module.exports = {
compress: function (opts, callback) {
const fs = require('node:fs');
const tar = require('tar-fs');
const zlib = require('node:zlib');
// utility
const error = function (error) {
callback(error);
};
// ensure callback
callback = callback || function () { };
// ensure opts
opts = opts || {};
opts.tar = opts.tar || {};
opts.gz = opts.gz || {};
// default gzip config
opts.gz.level = opts.gz.level || 6;
opts.gz.memLevel = opts.gz.memLevel || 6;
// ensure src and dest
if (!opts.src) {
return error(`BackItUp cannot found source "${opts.src}" for compress!`);
}
if (!opts.dest) {
return error(`BackItUp cannot found destination "${opts.dest}" for compress!`);
}
// compress
process.nextTick(function () {
tar.pack(opts.src, opts.tar)
.on('error', error)
.pipe(zlib.createGzip(opts.gz)
.on('error', error))
.pipe(fs.createWriteStream(opts.dest)
.on('error', error)
.on('finish', callback));
});
},
decompress: function (opts, callback) {
const fs = require('node:fs');
const tar = require('tar-fs');
const zlib = require('node:zlib');
// utility
const error = function (error) {
callback(error);
};
// ensure callback
callback = callback || function () { };
// ensure opts
opts = opts || {};
opts.tar = opts.tar || {};
opts.gz = opts.gz || {};
// ensure src and dest
if (!opts.src) {
return error(`BackItUp cannot found source "${opts.src}" for decompress!`);
}
if (!opts.dest) {
return error(`BackItUp cannot found destination "${opts.dest}" for decompress!`);
}
// decompress
process.nextTick(function () {
fs.createReadStream(opts.src)
.on('error', error)
.pipe(zlib.createGunzip(opts.gz)
.on('error', error))
.pipe(tar.extract(opts.dest, opts.tar)
.on('error', error)
.on('finish', callback));
});
}
};