UNPKG

walter

Version:

Backup utilities for postgresql

76 lines (66 loc) 2.22 kB
var env = process.env; var fs = require('fs'); var knox = require('knox'); var path = require('path'); var moment = require('moment'); var buffers = require('buffers'); var optimist = require('optimist'); var spawn = require('child_process').spawn; var textable = require('text-table'); var filesize = require('humanize').filesize; var argv = optimist .usage('List base backups on s3.\nUsage: walter backup-list') .describe('prefix', 'Prefix used to store files on s3 (env: WALTER_PREFIX)') .describe('aws-key', 'Your AWS Key (env: WALTER_AWS_KEY)') .describe('aws-secret', 'Your AWS Secret (env: WALTER_AWS_SECRET)') .describe('aws-region', 'AWS region for your bucket (env: WALTER_AWS_REGION)') .describe('s3-bucket', 'S3 Bucket Name (env: WALTER_S3_BUCKET)') .default('prefix', env.WALTER_PREFIX) .default('aws-key', env.WALTER_AWS_KEY) .default('aws-secret', env.WALTER_AWS_SECRET) .default('s3-bucket', env.WALTER_S3_BUCKET) .demand('prefix') .demand('aws-key') .demand('aws-secret') .demand('s3-bucket') .wrap(120) .argv; module.exports = function() { var s3 = createS3Client(); var base_path = argv['prefix'] + '/base'; s3.list({prefix: base_path}, onResponse); }; function onResponse(err, data) { if(err) return handleErr(err); var contents = data['Contents']; var rows = [ ['name', 'date', 'size'], ['-----------------', '-------------', '-------------'] ]; for(var i=0; i<contents.length; i++) { if(!/_manifest\.json$/.test(contents[i].Key)) { rows.push([ path.basename(contents[i].Key), moment(contents[i].LastModified).calendar(), filesize(contents[i].Size) ]); } } console.log("walter\n"); console.log("listing base backups for:", argv['prefix'], "\n"); console.log(textable(rows, {hsep: "\t"})); } function handleErr(err) { console.error(err); process.exit(1); } function createS3Client() { var options = { key: argv['aws-key'], secret: argv['aws-secret'], bucket: argv['s3-bucket'] }; if(argv['aws-region']) options.region = argv['aws-region']; return new knox.createClient(options); }