[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: `du' control files



srivasta@datasync.com (Manoj Srivastava)  wrote on 16.02.98 in <[🔎] 8790rbfncd.fsf@tiamat.datasync.com>:

> >>"Charles" == Charles Briscoe-Smith <cpbs@debian.org> writes:
>
> Charles> The tools to exploit this information aren't here yet, but I
> Charles> -have- put a fair amount of thought into it, and I'm
> Charles> convinced that this is data which a future tool could make
> Charles> very good use of.
>
>         Impleent first, design later only leads one into a strait
>  jacket with very limited available courses of action. As I said
>  before:
>
> Manoj> Until we have a tool, I do not think we can determine the input
> Manoj> format for such a tool. Packaging files that could possibly be
> Manoj> the input for an as yet unwritten tool (we are not clairvoyant,
> Manoj> are we now?) is slightly silly.

I just tried to write a quich checker in Perl, and discovered that the  
data is indeed in a suboptimal format.

This is what I currently have:

checkdu.pl:

#! /usr/bin/perl -w

use strict;

my %need;
my ($lbs, $lpn) = (0, "");
while (<>) {
	my ($bs, $pn) = split /\s+/, $_;
	my $fs = (stat("/$pn"))[0];
	print "$fs:$bs:$pn\n";
	$need{$fs} = 0 unless defined $need{$fs};
	$need{$fs} += $bs;
}

open DF, "df |";
while (<DF>) {
	m:/dev.*\s(/\S*): or next;
	my $dir = $1;
	my $fs = (stat($dir))[0];
	printf "%10d %s\n", $need{$fs}, $dir if defined $need{$fs};
}
close DF;

Easy, huh? Except for one problem. The typical du output has the outer  
directories include the space already mentioned for the inner ones.

So I need to subtract those.

Now, while that's easy for a human, I'd expect it to at least double the  
size of this script. Much better if the size came pre-subtracted.

Fortunately, that's easy to do. Use du -S instead of plain du.

Ok, Manoj. Now we have both a tool and a file format for that tool. Now  
what?

MfG Kai


Reply to: