--- a/imager Tue Jul 12 00:21:58 2011 +0200
+++ b/imager Mon Jul 18 13:46:26 2011 +0200
@@ -10,6 +10,7 @@
use File::Basename;
use File::Temp;
use Sys::Hostname;
+use IO::Compress::Gzip qw(gzip $GzipError);
use constant KiB => 1024;
use constant MiB => 1024 * KiB;
@@ -20,6 +21,8 @@
$SIG{INT} = sub { die "Got INT\n" };
+my $compress = 0;
+
my $DEV = shift // die "Need device name\n";
my $DIR = shift // die "Need destination (root) directory\n";
my $BS = 8 * MiB; # should be multiple of 4k (file system block size)
@@ -63,15 +66,17 @@
my $cs = md5_hex($data);
#(my $file = $cs) =~ s/(........)(?=.)/$1\//g;
#(my $file = $cs) =~ s/(.)(..)(....)(........)(.*)/$1\/$2\/$3\/$4\/$5/g;
- (my $file = $cs) =~ s/(...)(..)(.)(.*)/$1\/$2\/$3\/$4/g;
+ (my $file = $cs) =~ s/(..)(..)(.*)/$1\/$2\/$3/g;
#$file = dirname($file) . "/$cs";
+ $file .= ".gz" if $compress;
my $log = sprintf "%6d %s %s" => ($.-1), $cs, $file;
if (!-e "$DATA/$file") {
make_path dirname("$DATA/$file");
open(my $out, ">$DATA/$file");
- print {$out} $data;
+ if ($compress) { gzip \$data => $out or die $GzipError }
+ else { print {$out} $data }
close($out);
$log .= " *";
$stats{written}++;