changed directory leveling
authorHeiko Schlittermann (JUMPER) <hs@schlittermann.de>
Mon, 18 Jul 2011 13:46:26 +0200
changeset 1 d5d051a56a87
parent 0 e92e765779e7
child 2 79eb9a0609af
changed directory leveling
imager
--- 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}++;