¿Hay una manera estándar de diff du salidas para detectar donde el uso de espacio en disco más ha crecido

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Yo trabajo con un pequeño equipo de desarrolladores donde compartimos un sistema de archivos UNIX para almacenar un poco grandes conjuntos de datos. Este sistema de archivos tiene una cuota algo prohibitivo en él así como una vez al mes tenemos que averiguar dónde nuestro espacio libre se ha ido y ver lo que podemos recuperar.

Obviamente utilizamos du una buena cantidad, pero esto sigue siendo un proceso tedioso. Tenía la idea de que podemos ser capaces de mantener últimos meses du salida de la vuelta y lo comparan con este mes para ver donde hemos tenido el mayor crecimiento. Mi conjetura este plan no es muy original.

Con esto en mente estoy preguntando si hay algún guiones por ahí que ya lo hacen.

Gracias.

¿Fue útil?

Solución

Realmente no sé si hay una manera estándar, pero lo necesito hace algún tiempo y he escrito un pequeño script en perl para manejar eso. Esta es la parte de mi código:

#!/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);

El código no es muy tolerante a fallos por lo que puede adaptarse a él.

Básicamente el código, obtener la información actual de uso del disco, comparar el tamaño con el tiempo lastest correr (guardado en 'du-anterior'), imprimir el diferente y guardar la información de uso actual.

Si te gusta, tomarlo.

Espero que esto ayude.

Otros consejos

Escribí un programa para hacer esto llama diff-du . No puedo creer que nadie había hecho esto! De todos modos, me parece útil y espero que también lo hará.

Lo que realmente quiere es la KDirStat .

Para completar, también he encontrado du-diff y no lo ven menciona en ninguna otra respuesta. diff-du Andrew (mencionado en otra respuesta) parece ser más avanzada que éste.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top