Skip to content

Instantly share code, notes, and snippets.

@rdev5
Created December 29, 2013 06:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rdev5/8168049 to your computer and use it in GitHub Desktop.
Save rdev5/8168049 to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var sys = require('sys');
var exec = require('child_process').exec;
const RSYNC = '/usr/bin/rsync';
const SSH = '/usr/bin/ssh';
const BANDWIDTH_LIMIT = 512; // Kbps
// Backup destinations
var stores = {
'directory': {
type: 'local',
destination: '/Volumes/MY BACKUP VOL/',
flags: '-arz'
},
'ssh': {
type: 'ssh',
flags: '-arz --bwlimit=' + BANDWIDTH_LIMIT + ' -e "' + SSH + ' -l myuser" --delete myserver:/backups'
}
}
// Folders to backup
var targets = {
'folder1': {
source: '/folder/to/backup',
flags: "--delete --exclude '.DS_Store'",
background: false
},
'folder2': {
source: '/folder/to/also/backup',
flags: "--exclude '.DS_Store'",
background: false
}
}
for (var k in targets) {
for (var s in stores) {
var cmd = RSYNC;
var store = stores[s];
var target = targets[k];
switch(s) {
case 'directory':
if (!target.source || !store.destination) {
continue;
}
cmd += (store.flags ? ' ' + store.flags : '');
cmd += (target.flags ? ' ' + target.flags : '');
cmd += (target.source ? ' \'' + target.source + '\'' : '');
cmd += (store.destination ? ' \'' + store.destination + '\'': '');
cmd += (target.background ? ' &' : '');
break;
case 'ssh':
if (!target.source || !store.flags) {
continue;
}
cmd += (target.flags ? ' ' + target.flags : '');
cmd += (target.source ? ' \'' + target.source + '\'' : '');
cmd += (store.flags ? ' ' + store.flags : '');
cmd += (target.background ? ' &' : '');
break;
default:
break;
}
console.log('Running ' + cmd);
exec(cmd, function(err, stdout, stderr) {
if (err) console.log('[ERROR] ' + err);
// if (stdout) console.log('[STDOUT] ' + stdout);
if (stderr) console.log('[STDERR] ' + stderr);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment