A small script I wrote to see how fast a file grows (for instance when it’s being copied from one partition to another, disk to disk, network to network, …)
#!/usr/bin/perl
use strict;
use warnings;
my $file = shift @ARGV;
$| = 1;
my @LABELS = qw/kbytes mbytes gbytes/;
my $prev_size = -s $file;
my ($_TOTAL, $count) = (0, 1);
while(1) {
my $size = -s $file;
my $size_diff = $size - $prev_size;
$_TOTAL = ( $_TOTAL + $size_diff ) / $count++;
my($total, $label) = human_readable($_TOTAL);
printf "r%80s", ' ';
printf "rSize: %0.2f %s | Speed: %0.2f %s/s", human_readable($size)
, $total
, $label;
sleep 1;
$prev_size = $size;
}
sub human_readable {
my ($bytes) = @_;
my $label = 'bytes';
my @labels = @LABELS;
while ( $bytes > 1024 ) {
$bytes /= 1024;
$label = shift @labels;
}
return ($bytes, $label);
}