#!/usr/bin/perl use strict; if(@ARGV != 4) { die "Mauvais nombre d'arguments"; } my($src,$dst,$seek,$hop) = @ARGV; open IN, "fdisk -s $src |"; my($total_size) = ; $total_size *= 2; close(IN); print "$total_size blocks from $src\n"; my($size) = $total_size; my($count) = $seek; my($line, $cmd, $copied,$clean_nb,$error_nb,$temp); while($count <= $size){ $cmd = "dd if=$src of=$dst skip=$count seek=$count conv=sync"; print "$cmd\n"; open IN, $cmd." 2>&1 |"; $temp = ""; while($line = ){ $temp .= "\t".$line; if($line =~ /^(.*)\+(.*)\srecords\sin$/){ ($clean_nb,$error_nb) = ($1,$2); $copied = $clean_nb + $error_nb; #print STDOUT "$copied written blocs\n"; } # if($line =~ /^(.*)error(.*)$/){ # print STDERR "$error_nb I/O errors\n"; # } } close(IN); print $temp; $count += $copied + $hop; } exit;