Alle großen Dateien im Root-Dateisystem finden

124

Ich habe einen Linux-Server, der derzeit weniger Speicherplatz belegt:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Wie du siehst. /liegt bei 78%. Ich möchte überprüfen, welche Dateien oder Ordner Speicherplatz verbrauchen.

Ich habe es versucht:

find . -type d -size +100M

Welche Shows ergeben sich wie folgt:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Das ist mein Problem. Ich möchte nur den Namen der Dateien, die sich in Ordnern befinden, die Speicherplatz in /und nicht in /u01oder belegen /home. Da /es die Basis von allem ist, zeigt es mir jede Datei meines Servers.

Ist es möglich, große Dateien zu erhalten, von denen 78% einen Beitrag leisten /?

Abhishek Punkt Py
quelle
3
Siehe das -xdevPrädikat find. Siehe auch du -kx / | xdu(oder xdiskusage).
Stéphane Chazelas
1
relevantfind . -type f -print | xargs du -sk | sort -rn
user13107

Antworten:

217

Versuchen:

find / -xdev -type f -size +100M

Es werden alle Dateien mit einer Größe von mehr als 100 MB aufgelistet.

Wenn Sie etwas über das Verzeichnis wissen möchten, können Sie es versuchen ncdu.

Wenn Sie nicht mit Linux arbeiten, müssen Sie möglicherweise -size +204800oder verwenden -size +104857600c, da das MSuffix "Megabyte" nicht in POSIX enthalten ist.

find / -xdev -type f -size +102400000c
cuonglm
quelle
1
-xdevverhindert lediglich, dass find über Dateisysteme wandert, sodass Sie nur Ihr aktuelles physisches Laufwerk durchsuchen. Wenn Sie das nicht möchten, entfernen Sie einfach das -xdevArgument.
Kochfelder
49

Zusätzlich zu @Gnouc answer können Sie auch ls -laweitere Details hinzufügen . Das solltest du sudo privilegestun müssen.

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Gehen Sie wie folgt vor, um nur Dateien im Gigbyte-Bereich anzuzeigen:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2
zee
quelle
44

Der folgende Befehl findet nicht nur die 50 größten Dateien (> 100 MB) in Ihrem Dateisystem, sondern sortiert (GNU sort) auch nach den größten:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Stellen Sie keine Verzeichnisse auf anderen Dateisystemen her.

Bei BSD- findVerwendung, -xdie der veralteten -xdevPrimärquelle entspricht.

Bei allen Dateien und Verzeichnissen ist es noch einfacher:

du -ahx / | sort -rh | head -20

(Das -xFlag ist erforderlich, um sich duauf ein einziges Dateisystem zu beschränken.)

Wenn Sie GNU sort(from coreutils) nicht verwenden, verwenden Sie es ohne -h:

du -ax / | sort -rn | head -20

Für derzeit Verzeichnis (für schnellere Ergebnisse), ersetzen /mit ..

Kenorb
quelle
1
Ich würde erwähnen, dass diese Methode gut ist, weil sie für -hMenschen lesbare Ausgaben zeigt, und eine Beispielausgabe hinzufügen.
Ciro Santilli
Sehr gute Lösung. Danke.
Tigin