Analisador de uso de disco do Linux que age como links simbólicos são arquivos reais

6

Estou usando o git-annex, uma extensão do DVCS git, que é projetado para lidar com arquivos grandes. Faz uso pesado de links simbólicos. Os arquivos grandes reais são movidos para o diretório .git/annex e os arquivos originais são ligados por links simbólicos a ele.

Estou ficando sem espaço em disco e preciso compensar e ver o que está usando todo o meu espaço. Normalmente eu usaria uma ferramenta de uso de disco como ncdu , Baobab ou Filelight. No entanto, eles tratam o link simbólico como essencialmente vazio, e contam apenas o arquivo para o qual ele está apontando usando qualquer espaço. O que significa que quando eu uso o git-annex, ele não mostra nenhum espaço usado nos diretórios principais e muito espaço usado no diretório .git / annex. Isso não é útil.

Existe algum programa de uso de disco baseado em gráficos (ncurses) para o linux (o apt-get installable seria fácil (através de opções ou não) de contar um symlink como o uso do espaço que o arquivo original usa? Muitos têm opções de comportamento diferente para hard links, então faz sentido que alguns devam h

(Eu sei contar os links simbólicos como o uso de espaço tem falhas, como contar o espaço espacial duas vezes, links simbólicos quebrados, etc. Mas tudo bem para os meus propósitos)

    
por Rory 01.08.2012 / 20:13

4 respostas

6

O GNU du possui a opção --dereference, que desreferencia links simbólicos ao computar o uso do disco. No entanto, du se recusa a contar o mesmo espaço duas vezes, o que pode ser um problema na sua situação:

% mkdir foo bar baz
% dd if=/dev/zero of=foo/test bs=1024 count=10000
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.0176239 s, 581 MB/s
% (cd bar; ln -s ../foo/test)
% (cd baz; ln -s ../foo/test)
% du -hc bar baz
4.0K    bar
4.0K    baz
8.0K    total
% du -hc --dereference bar baz
9.8M    bar
4.0K    baz
9.8M    total

Se você não tem vários links simbólicos para o mesmo alvo, acho que a diferença faz o que você quer.

    
por 09.09.2012 / 17:25
1

git-annex tem uma lista de software relacionado incluindo algumas ferramentas de uso de disco git-annex aware - gadu e tamanhos .

    
por 22.03.2013 / 00:26
1

hoje em dia, o git-annex tem suas próprias soluções para esse problema. você pode usar:

git annex info --fast *

... para obter o uso real do disco (e mais) dos arquivos diretamente do git-annex. Ele também pode operar em repositórios remotos, o que é muito útil:

git annex info --fast --not --in here .

... lhe daria a quantidade de dados não no repositório atual, por exemplo.

Eu também usei o ncdu com este pequeno patch com bons resultados.

o fórum a montante discutindo isso é por 12.08.2015 / 05:07

0

Is there any (graphical or ncurses) based disk usage programme for linux (apt-get installable would be easie that is capable (through options or not) of counting a symlink as using up the space that the original file uses up?

TL; DR: du -akL mydirectory | xdiskusage -aq

Resposta longa: combine dois poderosos programas combináveis

Eu também uso git-annex e tenho a mesma necessidade.

Ferramenta de referência para obter o uso do disco: GNU du

O GNU du , como a maioria das ferramentas GNU, tem uma grande quantidade de opções , incluindo:

‘-L’ ‘--dereference’

Dereference symbolic links (show the disk space used by the file or directory that the link points to instead of the space used by the link).

Ferramenta de referência para explorar e ampliar interativamente uma árvore de uso de disco: xdiskusage

Além disso, há uma excelente ferramenta de representação de uso de disco leve chamada xdiskusage .

Você pode usá-lo de forma totalmente gráfica: escolha a pasta ou escolha o sistema de arquivos completo para incluir a representação do espaço livre. Você pode clicar, usar as setas e tecla Enter para ampliar a exibição da árvore, ocultar algumas subárvores. É muito prático, simples, rápido, mesmo no visor remoto.

Combine-os e lucre!

Tem a propriedade nice que também é possível fornecer o resultado de uma invocação semelhante a du -ak .

Então, você pode fazer:

du -akL mydirectory | xdiskusage

Sempre uso essa variante, em que -a significa mostrar todos os arquivos (não apenas os diretórios) e -q torna tudo muito mais rápido removendo o controle deslizante de andamento:

du -akL mydirectory | xdiskusage -aq

Imagem do link de Bill Spitzak.

apt-get?

apt-get installable

No Debian e derivados, incluindo o Ubuntu:

sudo apt-get install coreutils xdiskusage

(Você certamente já tem o coreutils instalado.)

    
por 19.03.2017 / 17:19