Existe uma maneira padrão de diferenciar saídas para detectar onde o uso do espaço em disco cresceu mais

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Trabalho com uma pequena equipe de desenvolvedores, onde compartilhamos um sistema de arquivos UNIX para armazenar conjuntos de dados um pouco grandes. Esse sistema de arquivos possui uma cota um tanto proibitiva.

Obviamente, usamos o DU uma quantia justa, mas esse ainda é um processo tedioso. Pensei que possamos manter os últimos meses de saída e compará -la até este mês para ver onde tivemos mais crescimento. Meu palpite esse plano não é muito original.

Com isso em mente, estou perguntando se existem scripts por aí que já fazem isso.

Obrigado.

Foi útil?

Solução

Eu realmente não sei se existe uma maneira padrão, mas preciso disso há algum tempo e escrevi um pequeno script Perl para lidar com isso. Aqui está a parte do meu 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);

O código não é muito tolerante a erros, então você pode ajustá-lo.

Basicamente, o código, obtenha as informações atuais de uso do disco, compare o tamanho com a última vez em que é executado (salvo em 'durevious'), imprima as diferentes informações de uso atual.

Se você gosta, pegue.

Espero que isto ajude.

Outras dicas

Eu escrevi um programa para fazer isso chamado diff-du. Não acredito que ninguém já havia feito isso! De qualquer forma, acho útil e espero que você também.

O que você realmente quer é o incrível Kdirstat.

Para completude, eu também encontrei du-deff E não o vejo mencionado em nenhuma outra resposta. Diff-du de Andrew (mencionado em outra resposta) parece ser mais avançado do que este.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top