AFAIK, there are no modules that will do that for either FAT or NTFS volumes. I thought maybe the Disk Defragmenter in Windows 2000 might be available over WMI (Windows Management Instrumentation), but that proved false. If you have a Windows Server 2003 machine, this info may be useful: Win32_Volume Class. Other than that, I don't see any automated options for you. Sorry -- I tried. :)
mhoward - at - hattmoward.org
| [reply] |
| [reply] |
Or switch to Linux and stop worrying about fragmentation :)
To be fair, NTFS is pretty good at handling fragmentation. It's that old simple-stupid FAT fs you have to worry about. No sane admin should be running a server using primarily FAT. Few desktop users running 2k or XP should need it, too.
----
: () { :|:& };:
Note: All code is untested, unless otherwise stated
| [reply] [d/l] |
| [reply] |
Thanks paulbort!
SysInternals has a tool called "contig" that was close enough that with a little Perl, I could make it Do The Right Thing.
contig reports the number of fragments that comprise each file in a directory. It's normal output was surprisingly unreliable-- it skipped files apparently randomly sometimes-- but the verbose output seems to be more consistent. Also, it doesn't run continuously. In order to get a picture of fragmentation over time, the user has to run contig manually over and over.
So I wrote a little controller script in Perl that runs contig every 5 seconds in verbose/recursive/analyze mode, parses the output, and writes the interesting parts to an output file. Here's the script:
use warnings;
use strict;
open OUT, ">out.txt";
while (1) {
$| = 1;
my @out = qx/contig.exe -a -s -v *"/;
foreach my $line(@out) {
if ($line =~ "is in") {
print OUT $line;
}
}
sleep 5;
print OUT "\n";
I was pleasantly surprised to find that @out actually contained what I wanted it to. Made parsing the output really easy.
| [reply] [d/l] |
| [reply] |
I am not sure this is possible, but here's a useful site for using Perl on win32.
Check out the Administrator's Handbook.
jayrom
| [reply] |