UNPKG

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
// 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)); }); } };