chiark / gitweb /
first cut of gz support
[chiark-utils.git] / backup / full
index 388270fa62263687ba670caff4c671fb81374426..5d210af38fd18e5c6421a85cfcd20dd45189dbe7 100755 (executable)
@@ -166,6 +166,22 @@ for $tf (@fsys) {
     pipe(FINDOR,FINDOW) or die $!;
     pipe(DUMPOR,DUMPOW) or die $!;
     pipe(TEEOR,TEEOW) or die $!;
+    $bufir='TEEOR';
+
+    if ($dopt{'gz'} eq 'y') {
+       $gz= '3';
+    } elsif ($dopt{'gz'} =~ m/^\d$/) {
+       $gz= $dopt{'gz'};
+    } elsif (defined $dopt{'gz'}) {
+       die "$tf bad gz";
+    } else {
+       $gz= 0;
+    }
+    if ($gz) {
+       $bufir='GZOR';
+       pipe(GZOR,GZOW) or die $!;
+    }
+    
     pipe(BUFOR,BUFOW) or die $!;
     parsefsys();
     
@@ -194,7 +210,10 @@ for $tf (@fsys) {
     startprocess '<p','>>this-md5sums','md5sum';
     startprocess $dumpin,'>&DUMPOW',$rstr.$dumpcmd;
     startprocess '<&DUMPOR','>&TEEOW','tee p';
-    startprocess '<&TEEOR','>&BUFOW','writebuffer';
+    if ($gz) {
+       startprocess '<&TEEOR','>&GZOW','gzip -v$gz';
+    }
+    startprocess '<&$bufir','>&BUFOW','writebuffer';
     startprocess '<&BUFOR','>/dev/null'
        ,"dd ibs=$softblocksizebytes obs=$blocksizebytes of=$ntape";
     closepipes();