Gibt es eine Standardmethode, um die DU -Ausgänge zu erkennen, wo die Nutzung des Festplattenraums am meisten gewachsen ist?

StackOverflow https://stackoverflow.com/questions/1533593

  •  20-09-2019
  •  | 
  •  

Frage

Ich arbeite mit einem kleinen Team von Entwicklern zusammen, in dem wir ein UNIX -Dateisystem teilen, um etwas große Datensätze zu speichern. Dieses Dateisystem hat eine etwas unerschwingliche Kontingentin, so dass wir ungefähr einmal im Monat herausfinden müssen, wo unser freier Speicherplatz gegangen ist und sehen, was wir wiederherstellen können.

Offensichtlich verwenden wir DU eine faire Menge, aber dies ist immer noch ein langweiliger Prozess. Ich hatte den Gedanken, dass wir in der letzten Monaten in der Lage sein könnten, sie mit diesen Monaten auszugeben, um zu sehen, wo wir das meiste Wachstum hatten. Ich vermute, dieser Plan ist nicht sehr originell.

In diesem Sinne frage ich, ob es da draußen Skripte gibt, die dies bereits tun.

Vielen Dank.

War es hilfreich?

Lösung

Ich weiß wirklich nicht, ob es einen Standardweg gibt, aber ich brauche es vor einiger Zeit und ich habe ein kleines Perl -Skript geschrieben, um damit umzugehen. Hier ist der Teil meines Codes:

#!/usr/bin/perl

$FileName = "du-previous";
$Location = ">";
$Sizes;

# Current +++++++++++++++++++++++++++++
$Current = `du "$Location"`;
open my $CurrentFile, '<', \$Current;
while (<$CurrentFile>) {
    chomp;
    if (/^([0-9]+)[ \t]+(.*)$/) {
        $Sizes{$2} = $1;
    }
}
close($CurrentFile);

# Previous ++++++++++++++++++++++++++++
open(FILE, $FileName);
while (<FILE>) {
    chomp;
    if (/^([0-9]+)[ \t]+(.*)$/) {
        my $Size = $Sizes{$2};
        $Sizes{$2} = $Size - $1;
    }
}
close(FILE);

# Show result +++++++++++++++++++++++++
SHOW: while (($key, $value) = each(%Sizes)) {
    if ($value == 0) {
        next SHOW;
    }

    printf("%-10d %s\n", $value, $key);
}
close(FILE);

#Save Current +++++++++++++++++++++++++
open my $CurrentFile, '<', \$Current;
open(FILE, ">$FileName");
while (<$CurrentFile>) {
    chomp;
    print FILE $_."\n";
}
close($CurrentFile);
close(FILE);

Der Code ist nicht sehr fehlertolerant, daher können Sie ihn anpassen.

Im Grunde genommen erhalten Sie den Code, erhalten Sie die aktuellen Datenträgernutzungsinformationen, vergleichen Sie die Größe mit der neuesten Zeit, die er ausgeführt hat (gespeichert in 'du-previous'), drucken Sie die anderen und speichern Sie die aktuellen Nutzungsinformationen.

Wenn Sie es mögen, nehmen Sie es.

Hoffe das hilft.

Andere Tipps

Ich habe ein Programm geschrieben, um dies zu tun Diff-du. Ich kann nicht glauben, dass niemand das schon getan hat! Jedenfalls finde ich es nützlich und hoffe, dass Sie es auch tun werden.

Was Sie wirklich wirklich wollen, ist das großartige Kdirstat.

Zur Vollständigkeit habe ich auch gefunden Du-diff Und sehen Sie es nicht in einer anderen Antwort erwähnt. Andrews Diff-DU (in einer anderen Antwort erwähnt) scheint fortgeschrittener zu sein, als dieser.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top