Calcule o tamanho dos arquivos gerenciados e não gerenciados no Ubuntu

3

Existe uma maneira de calcular o tamanho de todos os arquivos que não são gerenciados pelo gerenciador de pacotes? Por exemplo, todas as coisas que estão em /opt , /var/ , /usr/local , etc.

Gostaria de descobrir quanto espaço em disco é usado pelos pacotes instalados e compará-lo ao espaço em disco usado por arquivos não gerenciados.

Atualização: Minha pergunta é diferente de O que está ocupando tanto espaço no meu disco, ao lado do sistema de arquivos?

Eu sei que em distribuições baseadas em apt/dpkg como Debian e Ubuntu o gerenciador de pacotes, por exemplo, o dpkg mantém um registro de todos os arquivos que estão instalados nele. Podemos usar ferramentas como dpkg-query para obter informações sobre esses pacotes.

Por exemplo, tentei obter o tamanho de todos os pacotes instalados com este comando:

dpkg-query -W --showformat='${Installed-Size}\n' | \
    sort -k1,1n |awk '{s+=$1} END {print s}'

mas acredito que isso não esteja correto, porque a soma calculada é muito próxima do espaço ocupado total em / e eu tenho vários GB de arquivos armazenados em /opt que não devem contar para esse resultado.

Essencialmente, o que estou procurando são algumas ferramentas que podem distinguir entre arquivos instalados pelo gerenciador de pacotes e todos os outros arquivos que estão no sistema de arquivos raiz, mas que não são gerenciados pelo gerenciador de pacotes.

Quando meu disco começar a encher, eu gostaria de saber se eu:

a) Instalou muitos pacotes ou  b) Existem muitos outros arquivos no sistema de arquivos que ocupam espaço.

Por isso, gostaria de obter algo como as seguintes informações sobre o meu sistema de arquivos raiz:

56GB of 60GB are used on '/':

  * 32GB are used by installed packages
  * 24GB are used by other files

Quando uso uma ferramenta como baobab , ela não faz distinção entre arquivos instalados do gerenciador de pacotes e qualquer outro arquivo.

    
por lanoxx 18.01.2017 / 12:10

1 resposta

0

Não há uma maneira confiável de fazer isso, já que os pacotes podem baixar arquivos durante a instalação que o dpkg não estaria ciente. O pacote seria limpo se desinstalado, de modo que, de certo modo, é gerenciado, mas dpkg não os rastreia. E enquanto dpkg conhece os tamanhos do pacote, os arquivos podem, é claro, ter mudado após a instalação.

Pacotes podem ter arquivos em /opt (Google Chrome, por exemplo), /var/ (muitos exemplos para listar, basta fazer dpkg -S /var ), /usr/local (certificados SSL devem ser instalados usando um diretório em /usr/local , por exemplo.

De forma confiável, os únicos diretórios que você pode excluir são /home , /cdrom , /mnt , /media (e /lost+found , mas isso é um artefato do sistema de arquivos, não padrão).

Para mim, o comando que você tentou e o seguinte estão em acordo razoável e diferem significativamente com o uso real do sistema de arquivos (a lista de arquivos de um pacote está em /var/lib/dpkg/info/<package>.list ):

$ (cat /var/lib/dpkg/info/*.list | sudo xargs -d '\n' stat -c '%s' | awk '{c+=$1}END{print int(c/1024)}') 2>/dev/null
5572166

Compare:

$ dpkg-query -W --showformat='${Installed-Size}\n' | awk '{c+=$1}END{print c}'
5462957
$ df /
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18446076 6744528  10741500  39% /

Pessoalmente, basta verificar os tamanhos de /var/cache e /home .

    
por muru 09.03.2017 / 06:24

Tags