# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1310989586 -7200 # Node ID d5d051a56a87747e8d7872383c2993f31557330a # Parent e92e765779e715ac04e417ea8042e0703f0e69cd changed directory leveling diff -r e92e765779e7 -r d5d051a56a87 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}++;