Ich habe einen Ubuntu 20.04-Server auf einem einzelnen 8-GB-Laufwerk installiert. Die Standardinstallation hat auch einige "Snap"s installiert. Es gibt also einige „squashfs“-Dateisysteme, die auch von df
gemeldet werden Befehl:
# 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
Wie Sie sehen, sind nur 1837 MB an Daten auf der (einzigen) Festplatte gespeichert.
Jetzt versuche ich die Liste, die die Festplattennutzung für jedes Verzeichnis unter root (/
) mit dem folgenden Befehl:
# 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
Die Ausgabe zeigt eine große Menge an Speicherplatz, die von /snap
verwendet wird Verzeichnis, was natürlich nicht stimmt.
Was ist der richtige Weg, um die Größe von Dateien zu zählen, die sich nur befinden auf „real disk“ Dateisystemen? Hinzufügen der Option -x
zu du
fühle ich mich nicht wohl, weil ich in Zukunft vielleicht ein anderes „echtes Festplatten“-Dateisystem unter /home
gemountet habe zum Beispiel und ich will die in du
gezählt werden Ausgabe.
Akzeptierte Antwort:
Im Gegensatz zu df
, soweit ich weiß du
stellt keinen --exclude-type
bereit bestimmte Dateisystemtypen zu überspringen. Sie könnten jedoch bestimmte Top-Level-Verzeichnisse nach Glob-Muster ausschließen:
du -smc --exclude=/snap /* 2>/dev/null
oder (um auch flüchtige Dateisysteme auszuschließen) und vorausgesetzt, Ihre Shell unterstützt die Klammererweiterung:
du -smc --exclude=/{proc,run,sys,snap} /* 2>/dev/null