GNU/Linux >> Znalost Linux >  >> Ubuntu

Prevent Du Command Report Inflated Info O adresářích /snap?

Mám server Ubuntu 20.04 nainstalovaný na jednom 8GB disku. Výchozí instalace má také nainstalovány některé „snap“. Existují tedy některé souborové systémy „squashfs“, které také uvádí df příkaz:

# df -mT
Filesystem     Type     1M-blocks  Used Available Use% Mounted on
/dev/root      ext4          7877  1837      6025  24% /
devtmpfs       devtmpfs       465     0       465   0% /dev
tmpfs          tmpfs          477     0       477   0% /dev/shm
tmpfs          tmpfs           96     1        95   1% /run
tmpfs          tmpfs            5     0         5   0% /run/lock
tmpfs          tmpfs          477     0       477   0% /sys/fs/cgroup
/dev/loop0     squashfs        18    18         0 100% /snap/amazon-ssm-agent/1566
/dev/loop1     squashfs        94    94         0 100% /snap/core/9066
/dev/loop2     squashfs        55    55         0 100% /snap/core18/1705
/dev/loop3     squashfs        69    69         0 100% /snap/lxd/14804
/dev/loop4     squashfs        70    70         0 100% /snap/lxd/14890
/dev/loop5     squashfs        55    55         0 100% /snap/core18/1754
tmpfs          tmpfs           96     0        96   0% /run/user/1000

Jak vidíte, na (jediném) disku je uloženo pouze 1837 MB dat.

Nyní zkouším seznam využití disku pro každý adresář přítomný v kořenovém adresáři (/ ) pomocí následujícího příkazu:

# du -smc /* 2>/dev/null
0   /bin
48  /boot
0   /dev
8   /etc
1   /home
0   /lib
0   /lib32
0   /lib64
0   /libx32
1   /lost+found
1   /media
1   /mnt
1   /opt
0   /proc
1   /root
1   /run
0   /sbin
1116    /snap
1   /srv
0   /sys
1   /tmp
1166    /usr
601 /var
2938    total

Výstup ukazuje velké množství místa na disku, které využívá /snap adresář, což samozřejmě není pravda.

Jaký je správný způsob, jak počítat velikost uložených souborů pouze na souborových systémech „skutečného disku“? Přidání volby -x na du necítím se dobře, protože v budoucnu možná budu mít jiný souborový systém „skutečného disku“ připojený pod /home například a já chci které se mají počítat v du výstup.

Přijatá odpověď:

Na rozdíl od df , pokud vím du neposkytuje --exclude-type přeskočit konkrétní typy souborových systémů. Můžete však vyloučit konkrétní adresáře nejvyšší úrovně podle vzoru glob:

du -smc --exclude=/snap /* 2>/dev/null

nebo (abychom vyloučili i pomíjivé souborové systémy) a za předpokladu, že váš shell podporuje rozšíření závorek:

du -smc --exclude=/{proc,run,sys,snap} /* 2>/dev/null

Ubuntu
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Rozdíl mezi /var/log/messages, /var/log/syslog a /var/log/kern.log?

  1. Kubuntu zobrazuje chybu při přihlášení (file:///usr/share/sddm//themes/breeze/main.qml:žádný takový soubor nebo adresář)?

  2. Vyvolat doplněk Firefoxu pomocí příkazu?

  3. Ubuntu 14.04 „nedošlo k přehrávání Uri na vstupním souboru:///*“?

  1. „Nelze vytvořit adresář mezipaměti /home//.composer/cache/repo/https—packagist.org/, nebo adresář není zapisovatelný. Pokračovat bez mezipaměti“?

  2. Proč nefunguje find -exec mv {} ./target/ +?

  3. Statické adresáře http nejsou obsluhovány