Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- # Compares all the files in two folders. Comparison is done using md5 signature.
- #
- # AUTHOR: Diego Pino García <dpino@igalia.com>
- use strict;
- open ERROR, ">.compare_errors" || die("Couldn't create .compare_errors");
- open LOG, ">.log" || die("Couldn't create .log");
- my $dir1 = $ARGV[0] || ".";
- my $dir2 = $ARGV[1] || ".";
- debug("$dir1, $dir2");
- my @files = @{readfiles($dir1)};
- debug("total files: ".scalar(@files));
- compare($dir1, $dir2, @files);
- close ERROR;
- close LOG;
- sub md5
- {
- my $filedir = shift;
- my $str = `md5sum $filedir | cut -d " " -f 1`;
- $str =~ s/\n//g;
- return $str;
- }
- sub debug
- {
- my $str = shift;
- print LOG $str."\n";
- }
- sub compare
- {
- my($dir1, $dir2, @files) = @_;
- foreach my $file (@files) {
- debug($file);
- if ( (-f "$dir1/$file") && (-f "$dir2/$file") ) {
- my $file1MD5 = md5("$dir1/$file");
- my $file2MD5 = md5("$dir2/$file");
- debug("$file1MD5 == $file2MD5");
- if ($file1MD5 != $file2MD5) {
- print ERROR "$dir1/$file and $dir2/$file are different!\n";
- }
- } else {
- if (!(-f "$dir1/$file")) {
- print ERROR "Missing $dir1/$file\n";
- }
- if (!(-f "$dir2/$file")) {
- print ERROR "Missing $dir2/$file\n";
- }
- }
- }
- }
- sub readfiles
- {
- my $dir = shift;
- my $files = [];
- opendir DIR, $dir || die("Couln't open dir: $dir\n");
- debug("Open dir: $dir");
- while (my $file = readdir(DIR)) {
- if (-f "$dir/$file") {
- push $files, $file;
- }
- }
- closedir DIR;
- return $files;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement