Vraag Bereken de grootte van beheerde en niet-beheerde bestanden op Ubuntu


Is er een manier om de grootte van alle bestanden te berekenen die niet door de pakketbeheerder worden beheerd? Bijvoorbeeld alle dingen die erin zitten /opt, /var/, /usr/local, enz.

Ik zou graag willen weten hoeveel schijfruimte wordt gebruikt door geïnstalleerde pakketten en dat vergelijken met de schijfruimte die wordt gebruikt door onbeheerde bestanden.

Bijwerken: Mijn vraag is anders dan Wat kost zoveel ruimte op mijn schijf, naast het bestandssysteem?

Ik weet dat apt/dpkg op basis van distributies zoals Debian en Ubuntu, de pakketbeheerder, bijvoorbeeld dpkg houdt bij van alle bestanden die ermee zijn geïnstalleerd. We kunnen tools gebruiken zoals dpkg-query om informatie te krijgen over deze pakketten.

Ik heb bijvoorbeeld geprobeerd om de grootte van alle geïnstalleerde pakketten met dit commando te krijgen:

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

maar ik geloof dat dit niet correct is, omdat de berekende som heel dicht bij de totale bezette ruimte in ligt / en ik heb verschillende GB bestanden opgeslagen onder /opt dat moet niet meetellen voor dit resultaat.

In wezen ben ik op zoek naar enkele hulpmiddelen die een onderscheid kunnen maken tussen bestanden die zijn geïnstalleerd door de pakketbeheerder en alle andere bestanden die zich in het hoofdbestandssysteem bevinden, maar niet worden beheerd door de pakketbeheerder.

Wanneer mijn schijf vol begint te raken, wil ik graag weten of ik:

a) Te veel pakketten geïnstalleerd of  b) Er zijn te veel andere bestanden op het bestandssysteem die ruimte innemen.

Dus ik zou graag iets als de volgende informatie over mijn rootbestandssysteem willen krijgen:

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

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

Wanneer ik een tool zoals gebruik baobab, het maakt geen onderscheid tussen geïnstalleerde bestanden van pakketbeheer en andere bestanden.


3
2018-01-18 11:10


oorsprong


du -sh /opt /var /usr/local toont u de grootte van elke directory waarin u bent geïnteresseerd - 13dimitar
Mogelijk duplicaat van Wat kost zoveel ruimte op mijn schijf, naast het bestandssysteem? - David Foerster


antwoorden:


Er is geen betrouwbare manier om dit te doen, omdat pakketten bestanden kunnen downloaden tijdens het installeren ervan dpkg zou niet bewust zijn van. Het pakket zou opruimen als het gedeinstalleerd is, dus ze worden in zekere zin beheerd, maar dpkg volgt ze niet. En terwijl dpkg kent de formaten van het pakket, de bestanden kunnen natuurlijk na de installatie zijn gewijzigd.

Pakketten kunnen bestanden bevatten /opt (Google Chrome, bijvoorbeeld), /var/ (veel te veel voorbeelden om op te noemen, gewoon doen dpkg -S /var) /usr/local (SSL-certificaten moeten worden geïnstalleerd een map gebruiken in /usr/local, voor een voorbeeld).

Betrouwbaar zijn de enige mappen die u kunt uitsluiten /home, /cdrom, /mnt, /media (en /lost+found, maar dat is een artefact van het bestandssysteem, niet standaard).

Voor mij is de opdracht die u hebt geprobeerd en de volgende in redelijke overeenstemming en verschillen aanzienlijk met het feitelijke bestandssysteemgebruik (de lijst met bestanden van een pakket is in /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

Vergelijken:

$ 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% /

Persoonlijk controleer ik gewoon de maten van /var/cache en /home.


0
2018-03-09 05:24