Skip to content

Instantly share code, notes, and snippets.

@z3cka
Last active August 28, 2015 05:03
Show Gist options
  • Save z3cka/421cf24ee74319d12df7 to your computer and use it in GitHub Desktop.
Save z3cka/421cf24ee74319d12df7 to your computer and use it in GitHub Desktop.
compare md5s between directories

Install

npm install async md5-file

Usage

node md5er.js DIR-1 DIR-2

Inspect output manually.

TODO

1. put results in data model
2. compare parts of data to find matches and diffs
3. support for nested directories(?)

Sample output

$ node md5er.js DRUP-640 DRUP-641
Done processing dirs:
{ 'DRUP-640':
   { '.gitignore': 'ba9dcac2d0c438c5d6a24d825821be47',
     'README.md': '57511de7dd70936f29556e36d6f97fd5',
     'license.txt': 'ed08083dba4f02cead20e256e302c47f',
     'preservation.wordpress.2015-06-08.xml': 'a0d2ed7acfebe6688e68dc309bc021bb' },
  'DRUP-641':
   { '.DS_Store': 'ed5ec6f5043d9ec13e582610b35eab2b',
     '.gitignore': 'ba9dcac2d0c438c5d6a24d825821be47',
     'README.md': 'ad9417ff192440d7dbf035c9323262c8',
     'license.txt': 'ed08083dba4f02cead20e256e302c47f' } }
var async = require('async');
var fs = require('fs');
var md5File = require('md5-file');
var dirs = {};
async.waterfall([
function (callback) {
folderbuilder(process.argv[2]);
callback();
},
function (callback) {
folderbuilder(process.argv[3]);
callback();
}
],
function (err) {
console.log("Done processing dirs:");
console.log(dirs);
});
function folderbuilder(dir) {
dirs[dir] = {};
files = fs.readdirSync(dir);
async.eachSeries(files, function iterator(filename, callback) {
var file = dir + '/' + filename;
if (fs.statSync(file).isFile()) {
dirs[dir][filename] = md5File(file);
}
callback();
}, function (err) {
if (err) {
console.log(err);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment