So finden Sie große Dateien und Verzeichnisse in Linux

Das Ermitteln der Größe großer Dateien und Verzeichnisse auf Linux-Servern ist eine der wichtigsten Aufgaben, auf die jeder Systemadministrator bei seinen täglichen Aufgaben stößt. Daher muss jeder Systemadministrator mehrere Möglichkeiten kennen, um die Größe größerer Festplatten und Dateien herauszufinden, die die Festplatten verbrauchen.

Manchmal wird es wichtiger, wenn die Festplatte Ihres Systems so schnell gefüllt wird und Sie herausfinden müssen, welche Dateien oder Verzeichnisse Ihren gesamten Festplattenbereich auf einem Linux aufnehmen. In diesem Fall sollten wir in der Lage sein, einen bestimmten Verzeichnisspeicherort zu finden, an dem die Daten gefüllt werden. Da es keinen solchen Shortcut-Befehl gibt, der verfügbar ist, um die größten Dokumente oder Verzeichnisse auf einem Linux- oder UNIX-Dateisystem zu erkennen, gibt es jedoch eine Möglichkeit, mit einigen Befehlszeilendienstprogrammen zum Quellspeicherort zu gelangen.

Dieses Tutorial hilft Ihnen also, mehrere Befehle zu verwenden, die entweder auf einem Linux- oder UNIX-ähnlichen System verwendet werden können, um die größten Dateien oder Verzeichnisse auf den Dateisystemen zu finden.

1) Verwenden des Find-Befehls

Der Befehl ‘find’ ist sehr nützlich, um nach Dateien in einer Verzeichnishierarchie zu suchen und nach großen Dateien und Verzeichnissen in Ihrem System zu suchen. Lassen Sie uns den folgenden Befehl ausführen, um alle Dateien aufzulisten, die eine Größe von mehr als 50 MB haben. Sie können eine noch größere Zahl angeben.

# find / -xdev -type f -size +50M

Um detailliertere Ergebnisse zu diesen großen Dateien zu erhalten, können Sie Ihren ‘find’-Befehl unter den Parametern erweitern.

# find / -xdev -type f -size +50M -exec ls -alh {} ; | sort -nk 5

Verwenden Sie den folgenden Befehl, um die bis zu 10 größten Dateien in einem bestimmten Verzeichnis Ihres Systems zu finden.

# find /usr -type f -printf "%s %pn" | sort -rn | head -n 10
114973832 /usr/share/fonts/opentype/noto/NotoSansCJK.ttc
83333096 /usr/lib/thunderbird/libxul.so
78809336 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0
71551944 /usr/lib/firefox/libxul.so
58250232 /usr/lib/libreoffice/program/libmergedlo.so
41729688 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.19.4
41587032 /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
41294304 /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess2
37857816 /usr/lib/x86_64-linux-gnu/libQt5WebKit.so.5.5.1
35945726 /usr/local/bin/consul

2) Verwenden des ls-Befehls

Das ‘ls’ ist ein Linux-Shell-Befehl, der den Verzeichnisinhalt von Dateien und Verzeichnissen auflistet. Sie können diesen Befehl auf viele Arten verwenden, um die Dateien und Ordner aufzulisten. Um die Liste der Dateien im aktuellen Verzeichnis zu überprüfen, sortiert nach Größe mit größerer Größe oben, führen Sie den folgenden Befehl aus.

# ls -alhS
-rw-------  1 root root  59K Apr 18 20:57 agedu.dat
-rw-------  1 root root  13K Apr 20 18:27 .gt5.html
-rw-r--r--  1 root root  10K Jan 25 03:43 index.html
-rw-------  1 root root 4.1K Apr 22 22:06 .bash_history
drwx------  6 root root 4.0K Apr 18 20:57 .
drwxr-xr-x 24 root root 4.0K Apr 17 10:40 ..
drwx------  2 root root 4.0K Apr 20 17:03 .cache
drwx------  3 root root 4.0K Apr 12 15:38 .gnupg
drwx------  2 root root 4.0K Apr 20 18:27 .gt5-diffs
drwx------  2 root root 4.0K Apr 20 18:29 .w3m
-rw-r--r--  1 root root 3.1K Oct 22  2015 .bashrc
-rw-------  1 root root 1.1K Apr 12 15:43 .viminfo
-rw-r--r--  1 root root  148 Aug 17  2015 .profile

Ebenso können Sie mit dem Befehl ‘ls’ hinzufügen mit r um die Größe der Dateien im aktuellen Verzeichnis rekursiv anzuzeigen, oder Sie können den Pfad des Verzeichnisses angeben, in dem Sie die Größe der dort vorhandenen Dateien sehen möchten.

# ls -lhtr
# ls -lhtr /var/log/

Um eine Liste der 10 größten Dateien rekursiv im aktuellen Verzeichnis zu erhalten, verwenden Sie den folgenden Befehl.

# ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n10
456K initial-status.gz
356K syslog
248K dpkg.log
216K syslog.1
168K kern.log
160K kern.log.1
100K dpkg.log.2.gz
96K partman
92K syslog
84K syslog.6.gz

Um mehr Hilfe bei der Verwendung des ‘ls’-Befehls zu erhalten, können Sie den folgenden Befehl verwenden.

# ls --help

3) Verwenden des gt5-Tools

‘gt5’ ist ein weiteres großartiges Befehlszeilentool, mit dem die Größe von Dateien und Verzeichnissen auf einem Linux-System überprüft werden kann. Es muss jedoch auf Ihrem System installiert sein, bevor Sie es verwenden können. Um ‘gt5’ zu installieren, können Sie den folgenden Befehl auf Ihrem Linux-System ausführen.

# apt install gt5

Nach der Installation können Sie damit die Größe Ihrer Systemdateien und Verzeichnisse mit den folgenden Befehlen überprüfen.

# gt5
# gt5 /var

Sie können ein beliebiges Verzeichnis angeben, das durch den Befehl ‘gt5’ erweitert wurde, um die Verzeichnisse und Dateien mit der höchsten Größe zu überprüfen. Um die Verzeichnisse weiter zu erweitern, ziehen Sie Ihren Mauszeiger auf dieses Verzeichnis und drücken Sie die Eingabetaste.

# gt5 /var/log

Lassen Sie uns Ihr Verzeichnis in einen anderen Pfad ändern und den Befehl ‘gt5’ ausführen, um die Innenansicht der wichtigsten Dateien und Verzeichnisse zu erhalten.

# cd /usr/src/linux-headers-4.10.0-20-generic/
#gt5

4) Verwenden des du-Befehls

Der ‘du’-Befehl, abgekürzt als Disk-Nutzung, meldet die Größe von Verzeichnisbäumen einschließlich ihres gesamten Inhalts und die Größe einzelner Dateien. Dies macht es nützlich, um Speicherplatzfresser aufzuspüren, dh Verzeichnisse und Dateien, die viel oder übermäßig viel Speicherplatz auf einer Festplatte oder anderen Speichermedien belegen.

Die grundlegende Syntax für ‘du’ ist wie unten gezeigt.

# du [options] [directories and/or files]

Um die wichtigsten Dateien und Verzeichnisse auf einem Linux/UNIX-Dateisystem herauszufinden, gibt es keinen geeigneten Befehl von du, um die erforderliche Ausgabe zu erhalten, sondern ihn mit anderen Befehlen wie ‘sort’, ‘head’ und ‘find’ zu verwenden, wie unten gezeigt . Um die Ausgabe in einer für den Menschen lesbareren Form zu erhalten, können Sie den Parameter ‘-h’ mit dem Befehl ‘du’ verwenden.

# du -ah /var | sort -n -r | head -n 10
1020K   /var/cache/apt/archives/fonts-dejavu-core_2.37-1_all.deb
1016K   /var/cache/apt/archives/udev_232-21ubuntu3_amd64.deb
1016K   /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.04.1_amd64.deb
1016K   /var/cache/apt/archives/colord-data_1.3.3-2_all.deb
1016K   /var/cache/apt/archives/colord-data_1.3.2-1_all.deb
1004K   /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.10.1_amd64.deb
1004K   /var/cache/app-info/gv
1000K   /var/cache/app-info/gv/zh.gvz
996K    /var/cache/apt/archives/udev_231-9ubuntu4_amd64.deb
996K    /var/cache/apt/archives/netpbm_2%3a10.0-15.3build1_amd64.deb

Als nächstes können Sie den folgenden Befehl verwenden, indem Sie in Ihr erforderliches Verzeichnis wechseln, in dem Sie die obersten Dateien wie gezeigt überprüfen möchten.

# cd /var/log/
# du -hsx * | sort -rh | head -10
2.9M    dpkg.log.1
2.0M    dist-upgrade
1.6M    kern.log.1
932K    installer
232K    syslog.2.gz
228K    tomcat8
188K    syslog.1
188K    auth.log.1
144K    kern.log
136K    apt

5) Ncdu-Befehle zum Überprüfen der Festplattennutzung

Ncdu ist ein Analysetool für die Festplattennutzung mit einer Ncurses-Schnittstelle. Es ist sehr nützlich und einfach zu verwenden, wenn es darum geht, platzraubende Dateien und Verzeichnisse aufzuspüren. Sie können es einfach mit dem folgenden Befehl auf Ihrem Ubuntu- oder RHEL-System installieren.

# apt install ncdu
# yum install ncdu

Nach der Installation können Sie diesen Befehl verwenden, um die Festplattennutzung Ihres Systems zu überprüfen.

# ncdu

Nachdem Sie diesen Befehl ausgeführt haben, beginnt er mit der Aktualisierung Ihrer Festplatte und zeigt die Ergebnisse auf dem Terminal an. Verwenden Sie den folgenden Befehl, um die Festplattennutzung der Root-Partition Ihres Systems zu überprüfen.

# ncdu /

Oben erscheint der größte Ordner, der Ihnen die Fehlersuche erleichtert. Sie können seinen help-Befehl verwenden, um mehr über seine Verwendung zu erfahren, um mehr davon zu profitieren.

6) Shell-Skript, um Verzeichnisse mit dem höchsten Festplattenverbrauch zu finden

In diesem Shell-Skript sehen wir, welche obersten Verzeichnisse den großen Festplattenspeicher verbrauchen, damit wir im Notfall etwas Speicherplatz freigeben können. Die Befehle, die wir in diesem Skript verwendet haben, sind ‘du’ mit verschiedenen Schlüsseln, ‘sort’ und ‘head’.

Lassen Sie uns mit Ihrem Befehlszeileneditor wie ‘vi’ eine neue Datei erstellen und den folgenden Inhalt wie unten gezeigt einfügen.

# vim topdir.sh
#/bin/bash

    #check if user input argument

    if [ $# -eq 0 ]; then

    #if no argument print next messge and exit from script
    echo "Usage: $0 "

    exit 1

    fi
    # Save first arguments to variables
    CheckedDir="$1"
    #
    HeadValue=$2
    #set value for variable count value 1
    count=1

    #just print empty line
    echo ""

    #Print next message:
    echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:"

    echo ""

    #Getting list of directories and space they use.
    du -a --max-depth=1 --one-file-system ${CheckedDir}/ |

    #next we sort result
    sort -rn |

    sed "1d" |

    # next we get only first X directories
    head -"${HeadValue}" |

    #next print result to user
    while read size dirrr ; do
    #counting size in Mb

    size="$(( size / 1024 ))"

    #show output for user
    echo "N°${count} : ${dirrr} is ${size} Mb"

    ((count++))

    done

    echo ""

Save und close der Konfigurationsdatei, erteilen Sie der Datei ausführbare Berechtigungen und führen Sie dann das Skript aus, um die obersten Verzeichnisse unter Ihrem definierten Speicherort wie gezeigt zu finden.

# chmod +x topdir.sh
# ./topdir.sh /var/log/

Fazit

In diesem Tutorial haben wir mehrere Befehlszeilen-Dienstprogramme verwendet, um große Verzeichnisse und Verzeichnisse auf Festplatten von Linux-Systemen zu überprüfen. Wir verwenden häufig mehrere Möglichkeiten, um auf diese Dateien oder Verzeichnisse zuzugreifen, die viel Speicherplatz beanspruchen, und müssen solche Befehle verwenden, um diese Dateien und Verzeichnisse zu erreichen. In diesem Artikel haben wir nur die Befehlszeilentools zum Ermitteln des Speicherplatzverbrauchs behandelt, während es viele andere Webanalysatoren gibt, die den Speicherplatz mit großen Dateien und Verzeichnissen finden und überwachen.