Einführung
In diesem Lab erhalten Sie praktische Erfahrung in der Verwaltung von Linux-Dateisystemen auf einem Red Hat Enterprise Linux (RHEL)-System. Sie lernen, Dateisysteme und Blockgeräte zu identifizieren, die Festplattennutzung mit df und du zu untersuchen und das manuelle Ein- und Aushängen von Dateisystemen zu üben.
Darüber hinaus führt Sie dieses Lab durch die effiziente Suche nach Dateien mithilfe von Befehlen wie locate und find, sodass Sie nach Dateien anhand verschiedener Kriterien wie Name, Eigentümerschaft, Berechtigungen, Größe, Zeit und Dateityp suchen können.
Identifizierung von Dateisystemen und Blockgeräten
In diesem Schritt lernen Sie, wie Sie Dateisysteme und Blockgeräte auf einem Red Hat Enterprise Linux-System identifizieren können. Das Verständnis der Organisation von Speicher ist grundlegend für die Systemadministration. Wir werden verschiedene Befehle untersuchen, um Blockgeräte und die zugehörigen Dateisysteme aufzulisten und zu untersuchen.
Zunächst wollen wir einige Kernkonzepte verstehen:
- Blockgerät (Block Device): Ein Blockgerät ist eine Datei, die Low-Level-Zugriff auf Speichergeräte bietet. Beispiele hierfür sind Festplatten, SSDs und USB-Laufwerke. In Linux befinden sich diese typischerweise im Verzeichnis
/dev. - Partition (Partition): Eine Partition ist eine logische Unterteilung eines physischen Speichergeräts. Eine einzelne Festplatte kann mehrere Partitionen haben, die jeweils mit einem anderen Dateisystem formatiert oder für verschiedene Zwecke verwendet werden.
- Dateisystem (File System): Ein Dateisystem ist eine Methode und Datenstruktur, die ein Betriebssystem verwendet, um zu steuern, wie Daten gespeichert und abgerufen werden. Es organisiert Daten in Dateien und Verzeichnissen. Gängige Linux-Dateisysteme sind XFS und ext4.
- Einhängepunkt (Mount Point): Ein Einhängepunkt ist ein leeres Verzeichnis in der Dateisystemhierarchie, an das ein Dateisystem angehängt oder "eingehängt" wird, um seinen Inhalt zugänglich zu machen.
Beginnen wir damit, die auf Ihrem System verfügbaren Blockgeräte mit dem Befehl lsblk aufzulisten. Dieser Befehl liefert eine baumartige Übersicht über alle Blockgeräte und ihre Partitionen.
lsblk
Sie sollten eine Ausgabe ähnlich dieser sehen, die Geräte wie vda, vdb usw. anzeigt, die virtuelle Festplattengeräte in Ihrer Containerumgebung darstellen:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 253:0 0 40G 0 disk
├─vda1 253:1 0 1M 0 part
├─vda2 253:2 0 100M 0 part /boot/efi
└─vda3 253:3 0 39.9G 0 part /
vdb 253:16 0 40G 0 disk
In der Ausgabe:
NAME: Der Name des Blockgeräts (z. B.vda,vdb) oder der Partition (z. B.vda1,vda2).MAJ:MIN: Haupt- und Nebengerätenummern.RM: Wechseldatenträger (1, wenn wechselbar, 0, wenn nicht).SIZE: Die Größe des Geräts oder der Partition.RO: Read-only (1, wenn schreibgeschützt, 0, wenn nicht).TYPE: Typ des Geräts (z. B.disk,partfür Partition).MOUNTPOINTS: Wo das Gerät oder die Partition derzeit eingehängt ist.
Als Nächstes untersuchen wir die Dateisysteme und ihre Nutzung mit dem Befehl df. Der Befehl df meldet die Festplattenspeichernutzung des Dateisystems.
df
Die Ausgabe zeigt verschiedene Dateisysteme, ihre Gesamtgröße, den genutzten Speicherplatz, den verfügbaren Speicherplatz und die Einhängepunkte:
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 4096 0 4096 0% /dev
tmpfs 1822216 0 1822216 0% /dev/shm
tmpfs 728888 616 728272 1% /run
efivarfs 256 9 243 4% /sys/firmware/efi/efivars
/dev/vda3 41773036 3628732 38144304 9% /
/dev/vda2 102156 7198 94958 8% /boot/efi
tmpfs 364440 0 364440 0% /run/user/1000
Um die Ausgabe lesbarer zu machen, insbesondere für Größen, können Sie die Option -h für ein menschenlesbares Format (z. B. M für MiB, G für GiB) verwenden.
df -h
Sie sehen Größen in einem verständlicheren Format:
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 712M 616K 712M 1% /run
efivarfs 256K 8.5K 243K 4% /sys/firmware/efi/efivars
/dev/vda3 40G 3.5G 37G 9% /
/dev/vda2 100M 7.1M 93M 8% /boot/efi
tmpfs 356M 0 356M 0% /run/user/1000
Schließlich verwenden wir den Befehl lsblk -fp, um den vollständigen Pfad der Geräte, ihre UUIDs (Universally Unique Identifiers) und Dateisystemtypen aufzulisten. UUIDs sind stabile Bezeichner, die gleich bleiben, auch wenn sich Gerätenamen ändern, was sie für ein konsistentes Einhängen nützlich macht.
lsblk -fp
Die Ausgabe enthält UUIDs und Dateisystemtypen:
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
/dev/vda
├─/dev/vda1
├─/dev/vda2 vfat FAT16 E52E-0564 92.7M 7% /boot/efi
└─/dev/vda3 xfs root 4c234c8b-4f67-4d65-abb5-06753b1ec236 36.4G 9% /
/dev/vdb
Beachten Sie die Spalte UUID, die einen eindeutigen Bezeichner für jedes Dateisystem liefert. Dies ist entscheidend für das zuverlässige Einhängen von Dateisystemen, insbesondere in Konfigurationsdateien wie /etc/fstab.
Untersuchung der Dateisystemnutzung mit df und du
In diesem Schritt werden Sie sich eingehender mit der Untersuchung der Dateisystemnutzung mit den Befehlen df und du befassen. Während df einen Überblick über die Festplattenspeichernutzung für eingehängte Dateisysteme liefert, wird du (Disk Usage) verwendet, um die Dateispeichernutzung für bestimmte Dateien oder Verzeichnisse zu schätzen. Das Verständnis des Unterschieds und wann welcher Befehl verwendet werden soll, ist für ein effektives Festplattenspeichermanagement unerlässlich.
Beginnen wir damit, den Befehl df mit seiner menschenlesbaren Option erneut aufzurufen. Dieser Befehl eignet sich hervorragend, um eine schnelle Zusammenfassung darüber zu erhalten, wie viel Speicherplatz auf allen eingehängten Dateisystemen verwendet wird und wie viel verfügbar ist.
df -h
Die Ausgabe zeigt die Festplattennutzung in einem leicht lesbaren Format (z. B. G für Gigabyte, M für Megabyte):
Filesystem Size Used Avail Use% Mounted on
devtmpfs 892M 0 892M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 17M 899M 2% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/vda4 8.0G 1.4G 6.7G 17% /
/dev/vda3 1014M 166M 849M 17% /boot
tmpfs 183M 0 183M 0% /run/user/1000
Nun wollen wir den Befehl du untersuchen. Im Gegensatz zu df berechnet du den Festplattenspeicher, der von Dateien und Verzeichnissen innerhalb eines angegebenen Pfads verwendet wird. Dies ist besonders nützlich, wenn Sie herausfinden möchten, welche Verzeichnisse oder Dateien den meisten Speicherplatz verbrauchen.
Um die Festplattennutzung Ihres aktuellen Verzeichnisses (~/project) anzuzeigen, verwenden Sie du ohne Argumente. Dadurch wird die Größe jeder Datei und jedes Unterverzeichnisses innerhalb von ~/project aufgelistet.
du
Die Ausgabe kann umfangreich sein und standardmäßig Größen in Kilobyte anzeigen:
4 ./.config/xfce4/xfconf/xfce-perchannel-xml
8 ./.config/xfce4/xfconf
12 ./.config/xfce4
16 ./.config
4 ./.local/share/nano
8 ./.local/share
12 ./.local
28 .
Um die Ausgabe lesbarer zu machen, ähnlich wie bei df -h, können Sie die Option -h mit du verwenden.
du -h
Dadurch werden die Größen in menschenlesbaren Einheiten angezeigt:
4.0K ./.config/xfce4/xfconf/xfce-perchannel-xml
8.0K ./.config/xfce4/xfconf
12K ./.config/xfce4
16K ./.config
4.0K ./.local/share/nano
8.0K ./.local/share
12K ./.local
28K .
Oftmals sind Sie an der Gesamtgröße eines Verzeichnisses interessiert, anstatt an der Größe jeder einzelnen Datei und jedes Unterverzeichnisses. Hierfür können Sie die Option -s (summary) zusammen mit -h verwenden. Überprüfen wir die Gesamtgröße Ihres Home-Verzeichnisses (~).
du -sh ~
Dieser Befehl gibt die Gesamtgröße Ihres Home-Verzeichnisses aus:
48K /home/labex
Lassen Sie uns einige Dateien erstellen, um zu sehen, wie du ihre Größen meldet. Wir erstellen ein Verzeichnis namens test_data und erstellen dann einige Dateien darin.
Erstellen Sie zuerst das Verzeichnis:
mkdir ~/project/test_data
Navigieren Sie nun in das Verzeichnis test_data:
cd ~/project/test_data
Erstellen Sie als Nächstes einige Dateien mit Inhalt. Wir verwenden den Befehl head, um Dateien bestimmter Größe zu generieren.
head -c 1K < /dev/urandom > file1.txt
head -c 5K < /dev/urandom > file2.txt
head -c 10K < /dev/urandom > file3.txt
Verwenden Sie nun du -h, um die Größen dieser neuen Dateien und des Verzeichnisses test_data anzuzeigen.
du -h
Sie sollten eine Ausgabe ähnlich dieser sehen:
1.0K ./file1.txt
5.0K ./file2.txt
10K ./file3.txt
24K .
Die letzte Zeile (24K .) zeigt die Gesamtgröße des aktuellen Verzeichnisses (., also ~/project/test_data).
Gehen wir abschließend zurück in Ihr Verzeichnis ~/project und überprüfen Sie die Gesamtgröße von test_data mit du -sh.
cd ~/project
du -sh test_data
Dadurch wird die zusammengefasste Größe des Verzeichnisses test_data angezeigt:
24K test_data
Dies zeigt, wie du verwendet werden kann, um den Festplattenspeicherverbrauch innerhalb bestimmter Verzeichnisse zu ermitteln und Ihnen bei der effektiven Verwaltung des Speichers zu helfen.
Manuelles Einhängen und Aushängen von Dateisystemen
In diesem Schritt lernen Sie, wie Sie Dateisysteme manuell ein- und aushängen können. Durch das Einhängen eines Dateisystems werden dessen Inhalte über ein bestimmtes Verzeichnis (Einhängepunkt) in der Dateisystemhierarchie zugänglich gemacht. Durch das Aushängen wird das Dateisystem von seinem Einhängepunkt getrennt, wodurch seine Inhalte unzugänglich werden, bis es erneut eingehängt wird. Dies ist eine wichtige Fähigkeit für die Verwaltung von Wechselmedien, temporärem Speicher oder neuen Festplattenpartitionen.
Für diese Übung verwenden wir eines der nicht eingehängten Blockgeräte, die in Ihrer LabEx VM-Umgebung verfügbar sind. Aus dem vorherigen Schritt sollten Sie das Gerät /dev/vdb gesehen haben, das derzeit nicht eingehängt ist. Wir werden /dev/vdb für diesen Schritt verwenden.
Zuerst bestätigen wir die verfügbaren nicht eingehängten Blockgeräte mit lsblk.
lsblk
Sie sollten /dev/vdb ohne Einhängepunkte aufgelistet sehen.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 253:0 0 40G 0 disk
├─vda1 253:1 0 1M 0 part
├─vda2 253:2 0 100M 0 part /boot/efi
└─vda3 253:3 0 39.9G 0 part /
vdb 253:16 0 40G 0 disk
Bevor Sie ein Dateisystem einhängen können, benötigen Sie einen Einhängepunkt, also ein leeres Verzeichnis. Es ist üblich, /mnt für temporäre Einhängepunkte zu verwenden oder ein Unterverzeichnis darin zu erstellen. Erstellen wir ein neues Verzeichnis namens mydata in Ihrem Verzeichnis ~/project, das als unser Einhängepunkt dienen soll.
mkdir ~/project/mydata
Nun müssen wir das Gerät /dev/vdb mit einem Dateisystem formatieren. Wir verwenden das XFS-Dateisystem, das der Standard für Red Hat Enterprise Linux ist. Seien Sie vorsichtig mit diesem Befehl, da er alle Daten auf dem angegebenen Gerät löscht.
sudo mkfs.xfs /dev/vdb
Sie sehen eine Ausgabe, die die Erstellung des XFS-Dateisystems anzeigt:
meta-data=/dev/vdb isize=512 agcount=4, agsize=2621440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=10485760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Nachdem /dev/vdb nun ein XFS-Dateisystem hat, können Sie es an Ihrem Einhängepunkt ~/project/mydata einhängen. Der Befehl mount erfordert sudo-Rechte.
sudo mount /dev/vdb ~/project/mydata
Um zu überprüfen, ob das Dateisystem erfolgreich eingehängt wurde, verwenden Sie erneut den Befehl df -h. Sie sollten /dev/vdb mit /home/labex/project/mydata als Einhängepunkt aufgelistet sehen.
df -h
Suchen Sie nach /dev/vdb in der Ausgabe:
Filesystem Size Used Avail Use% Mounted on
...
/dev/vdb 40G 318M 40G 1% /home/labex/project/mydata
Nun können Sie Dateien und Verzeichnisse in ~/project/mydata erstellen, und diese werden auf dem Gerät /dev/vdb gespeichert. Erstellen wir eine Testdatei:
sudo touch ~/project/mydata/testfile.txt
Sie können den Inhalt von ~/project/mydata auflisten, um die Erstellung der Datei zu bestätigen:
ls -l ~/project/mydata
Sie sollten testfile.txt aufgelistet sehen:
total 0
-rw-r--r--. 1 root root 0 Jun 16 11:09 testfile.txt
Wenn Sie die Verwendung eines eingehängten Dateisystems beendet haben, ist es wichtig, es auszuhängen, um Datenbeschädigungen zu vermeiden, insbesondere bevor Sie ein physisches Gerät entfernen. Verwenden Sie den Befehl umount, um das Dateisystem auszuhängen.
sudo umount ~/project/mydata
Wenn der Aushängebefehl mit dem Fehler "target is busy" fehlschlägt, bedeutet dies, dass ein Prozess noch auf den Einhängepunkt zugreift. Dies geschieht häufig, wenn sich Ihr aktuelles Arbeitsverzeichnis innerhalb des eingehängten Dateisystems befindet. Um dies zu beheben, ändern Sie Ihr aktuelles Verzeichnis an einen Ort außerhalb des Einhängepunkts, z. B. in Ihr Home-Verzeichnis (~).
cd ~
Versuchen Sie dann erneut, es auszuhängen:
sudo umount ~/project/mydata
Überprüfen Sie nach dem Aushängen mit df -h erneut, ob /dev/vdb nicht mehr eingehängt ist.
df -h
Sie sollten /dev/vdb nicht mehr auf /home/labex/project/mydata eingehängt sehen.
Filesystem Size Used Avail Use% Mounted on
...
## /dev/vdb should not be listed here anymore
Dies schließt den Vorgang des manuellen Ein- und Aushängens eines Dateisystems ab.
Dateien nach Namen mit locate und find finden
In diesem Schritt lernen Sie, wie Sie Dateien auf Ihrem System mit zwei leistungsstarken Befehlen finden: locate und find. Beide Befehle helfen Ihnen bei der Suche nach Dateien, arbeiten aber unterschiedlich und eignen sich für verschiedene Szenarien.
Verwendung des Befehls locate
Der Befehl locate ist sehr schnell, da er eine vorgefertigte Datenbank mit Dateinamen und -pfaden durchsucht. Dies bedeutet jedoch, dass er möglicherweise keine Dateien findet, die seit der letzten Datenbankaktualisierung erstellt oder gelöscht wurden. Die Datenbank wird in der Regel täglich von einem Cron-Job aktualisiert, aber Sie können eine Aktualisierung erzwingen.
Zuerst stellen wir sicher, dass das Paket mlocate, das den Befehl locate bereitstellt, installiert ist.
sudo dnf install -y mlocate
Während der Installation sehen Sie eine Ausgabe ähnlich dieser:
Last metadata expiration check: 0:00:01 ago on Mon 15 May 2023 08:00:00 AM UTC.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
mlocate x86_64 0.26-28.el9 rhel-9-for-x86_64-appstream-rpms 100 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 100 k
Installed size: 230 k
Downloading Packages:
mlocate-0.26-28.el9.x86_64.rpm 100 kB/s | 100 kB 00:01
--------------------------------------------------------------------------------
Total 100 kB/s | 100 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mlocate-0.26-28.el9.x86_64 1/1
Running scriptlet: mlocate-0.26-28.el9.x86_64 1/1
Verifying : mlocate-0.26-28.el9.x86_64 1/1
Installed:
mlocate-0.26-28.el9.x86_64
Complete!
Nach der Installation müssen Sie die locate-Datenbank aktualisieren. Dieser Befehl erfordert sudo-Rechte.
sudo updatedb
Dieser Befehl wird im Hintergrund ausgeführt und kann je nach Größe Ihres Dateisystems einige Momente dauern.
Suchen wir nun nach einer gängigen Systemdatei wie passwd.
locate passwd
Sie sehen eine Liste der Pfade, die "passwd" enthalten:
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
...output omitted...
Um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, verwenden Sie die Option -i. Suchen wir nach Dateien, die "messages" enthalten, ohne uns um die Groß- und Kleinschreibung zu kümmern.
locate -i messages
Sie sehen Ergebnisse wie:
/usr/share/locale/zza/LC_MESSAGES
/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c
/usr/share/vim/vim82/ftplugin/msmessages.vim
...output omitted...
Sie können die Anzahl der Ergebnisse auch mit der Option -n begrenzen. Suchen wir die ersten 5 Vorkommnisse von "passwd".
locate -n 5 passwd
Dadurch werden nur die ersten 5 Übereinstimmungen angezeigt:
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
Verwendung des Befehls find
Der Befehl find durchsucht das Dateisystem in Echtzeit, was ihn langsamer macht als locate, aber sicherstellt, dass er alle Dateien findet, die Ihren Kriterien entsprechen, einschließlich derer, die kürzlich erstellt wurden. Er bietet auch viel leistungsfähigere Suchoptionen.
Die grundlegende Syntax für find lautet find [path] [expression]. Wenn kein Pfad angegeben ist, wird das aktuelle Verzeichnis durchsucht.
Suchen wir nach der Datei sshd_config beginnend im Stammverzeichnis (/).
find / -name sshd_config
Sie sollten den Pfad zur Konfigurationsdatei sehen:
/etc/ssh/sshd_config
Bei der Suche nach Teilnamen oder der Verwendung von Platzhaltern ist es wichtig, das Dateinamensmuster in Anführungszeichen zu setzen, um zu verhindern, dass die Shell es vorzeitig erweitert. Suchen wir nach allen Dateien, die in Ihrem Verzeichnis ~/project mit .txt enden.
find ~/project -name '*.txt'
Wenn Sie in der vorherigen Stufe file1.txt, file2.txt und file3.txt erstellt haben, sollten Sie diese aufgelistet sehen:
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
Um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung mit find durchzuführen, verwenden Sie die Option -iname. Suchen wir nach Dateien, die "README" (ohne Berücksichtigung der Groß- und Kleinschreibung) im Verzeichnis /usr/share/doc enthalten.
find /usr/share/doc -iname '*readme*'
Sie sehen viele Ergebnisse, zum Beispiel:
/usr/share/doc/libselinux/README
/usr/share/doc/libsepol/README
/usr/share/doc/libsemanage/README
...output omitted...
Der Befehl find ist sehr vielseitig und kann mit anderen Kriterien kombiniert werden, die Sie in den nächsten Schritten untersuchen werden.
Dateien nach Eigentümer, Berechtigungen, Größe und Zeit finden
In diesem Schritt lernen Sie, wie Sie den leistungsstarken Befehl find verwenden, um Dateien basierend auf verschiedenen Kriterien zu finden, die über ihren Namen hinausgehen. Dazu gehört die Suche nach Eigentümerschaft, Berechtigungen, Größe und Änderungszeit. Diese erweiterten Suchfunktionen sind für Systemadministrationsaufgaben wie Auditing, Bereinigung und Fehlerbehebung unerlässlich.
Dateien nach Eigentümerschaft finden
Sie können nach Dateien suchen, die einem bestimmten Benutzer oder einer bestimmten Gruppe gehören, indem Sie die Optionen -user bzw. -group verwenden. Sie können den Benutzer-/Gruppennamen oder ihre numerische ID angeben.
Suchen wir nach allen Dateien in Ihrem Home-Verzeichnis (~), die dem Benutzer labex gehören.
find ~ -user labex
Dadurch werden viele Dateien aufgelistet, einschließlich Ihrer Konfigurationsdateien:
/home/labex
/home/labex/.bash_logout
/home/labex/.bash_profile
/home/labex/.bashrc
/home/labex/.config
/home/labex/.config/xfce4
/home/labex/.config/xfce4/xfconf
/home/labex/.config/xfce4/xfconf/xfce-perchannel-xml
/home/labex/.local
/home/labex/.local/share
/home/labex/.local/share/nano
/home/labex/project
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
...output omitted...
Um nach Dateien zu suchen, die der Gruppe labex gehören:
find ~ -group labex
Die Ausgabe ist ähnlich, da labex typischerweise die primäre Gruppe für den Benutzer labex ist.
Sie können auch nach Benutzer-ID (UID) oder Gruppen-ID (GID) suchen. Der Benutzer labex hat typischerweise eine UID und GID von 1000.
find ~ -uid 1000
find ~ -gid 1000
Dateien nach Berechtigungen finden
Mit der Option -perm des Befehls find können Sie nach Dateien mit bestimmten Berechtigungen suchen. Berechtigungen können im Oktalmodus (z. B. 755) oder im symbolischen Modus (z. B. u=rwx,g=rx,o=rx) angegeben werden.
Erstellen wir eine Testdatei in Ihrem Verzeichnis ~/project mit bestimmten Berechtigungen.
touch ~/project/permission_test.txt
chmod 644 ~/project/permission_test.txt
Suchen wir nun nach Dateien in ~/project, die genau die Berechtigungen 644 haben.
find ~/project -perm 644
Sie sollten permission_test.txt aufgelistet sehen:
/home/labex/project/permission_test.txt
Sie können auch ein führendes / oder - mit den oktalen Berechtigungen verwenden:
/: Passt, wenn irgendwelche der angegebenen Berechtigungsbits gesetzt sind.-: Passt, wenn alle der angegebenen Berechtigungsbits gesetzt sind.
Suchen wir nach Dateien in ~/project, bei denen andere mindestens Leseberechtigung haben (o=r oder 004).
find ~/project -perm -004
Dadurch werden permission_test.txt und andere Dateien aufgelistet, die anderen Lesezugriff gewähren.
/home/labex/project/permission_test.txt
...output omitted...
Dateien nach Größe finden
Mit der Option -size können Sie nach Dateien basierend auf ihrer Größe suchen. Sie können die Größe mit Einheiten (z. B. k für Kilobyte, M für Megabyte, G für Gigabyte) angeben. Sie können auch + für "größer als" und - für "kleiner als" verwenden.
Suchen wir nach Dateien in Ihrem Verzeichnis ~/project/test_data, die genau 1 Kilobyte groß sind.
find ~/project/test_data -size 1k
Sie sollten file1.txt sehen:
/home/labex/project/test_data/file1.txt
Suchen Sie nun nach Dateien, die größer als 5 Kilobyte sind.
find ~/project/test_data -size +5k
Dies sollte file3.txt auflisten:
/home/labex/project/test_data/file3.txt
Und Dateien, die kleiner als 10 Kilobyte sind.
find ~/project/test_data -size -10k
Dies sollte file1.txt und file2.txt auflisten:
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
Dateien nach Änderungszeit finden
Sie können nach Dateien basierend auf ihrer Änderungszeit suchen, indem Sie Optionen wie -mmin (vor Minuten geändert) oder -mtime (vor Tagen geändert) verwenden.
Suchen wir nach Dateien in Ihrem Verzeichnis ~/project, die in den letzten 60 Minuten geändert wurden.
find ~/project -mmin -60
Dies umfasst wahrscheinlich permission_test.txt und die Dateien in test_data, wenn Sie sie kürzlich erstellt haben:
/home/labex/project
/home/labex/project/permission_test.txt
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
Um Dateien zu finden, die vor mehr als 1 Tag (24 Stunden) geändert wurden, können Sie +1 mit -mtime verwenden.
find ~/project -mtime +1
Dieser Befehl gibt möglicherweise keine Dateien zurück, wenn alle Ihre ~/project-Dateien kürzlich erstellt oder geändert wurden.
Diese Optionen können kombiniert werden, um sehr spezifische Suchabfragen zu erstellen, mit denen Sie Dateien auf Ihrem System effizient verwalten können.
Dateien basierend auf Dateityp suchen
In diesem letzten Schritt lernen Sie, wie Sie den Befehl find verwenden, um nach Dateien basierend auf ihrem Typ zu suchen. Dies ist besonders nützlich, wenn Sie alle Verzeichnisse, regulären Dateien, symbolischen Links oder Gerätedateien innerhalb eines bestimmten Pfads finden müssen.
Der Befehl find verwendet die Option -type, gefolgt von einem einzelnen Zeichen, um den Dateityp anzugeben. Hier sind einige gängige Dateitypen, nach denen Sie suchen können:
f: Reguläre Datei (regular file)d: Verzeichnis (directory)l: Symbolischer Link (symlink)b: Blockgerät (block device)c: Zeichengerät (character device)p: Benannte Pipe (FIFO)s: Socket
Beginnen wir mit der Suche nach allen Verzeichnissen in Ihrem Verzeichnis ~/project.
find ~/project -type d
Sie sollten eine Ausgabe ähnlich dieser sehen, die alle Verzeichnisse und Unterverzeichnisse auflistet:
/home/labex/project
/home/labex/project/test_data
Suchen wir als Nächstes nach allen regulären Dateien in Ihrem Verzeichnis ~/project.
find ~/project -type f
Dadurch werden Dateien wie file1.txt, file2.txt und file3.txt aufgelistet, die Sie zuvor erstellt haben:
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
Erstellen wir nun einen symbolischen Link, um die Suche nach Symlinks zu demonstrieren. Wir erstellen einen Symlink zu file1.txt in Ihrem Verzeichnis ~/project.
ln -s ~/project/test_data/file1.txt ~/project/link_to_file1.txt
Überprüfen Sie, ob der Symlink mit ls -l erstellt wurde:
ls -l ~/project/link_to_file1.txt
Sie sollten eine Ausgabe sehen, die anzeigt, dass es sich um einen symbolischen Link handelt:
lrwxrwxrwx. 1 labex labex 32 May 15 08:00 /home/labex/project/link_to_file1.txt -> /home/labex/project/test_data/file1.txt
Suchen Sie nun nach allen symbolischen Links in Ihrem Verzeichnis ~/project.
find ~/project -type l
Sie sollten Ihren neu erstellten Symlink sehen:
/home/labex/project/link_to_file1.txt
Suchen wir abschließend nach Blockgeräten. Blockgeräte befinden sich typischerweise im Verzeichnis /dev.
find /dev -type b
Dadurch werden Blockgeräte wie vda, vda1, vda2 usw. aufgelistet:
/dev/vda1
/dev/vda2
/dev/vda3
/dev/vda
/dev/vdb
Sie können die Option -type mit anderen find-Optionen kombinieren, die Sie in den vorherigen Schritten gelernt haben. Um beispielsweise alle Verzeichnisse in /etc zu finden, die dem Benutzer root gehören:
find /etc -type d -user root
Dies erzeugt eine lange Liste von Verzeichnissen:
/etc
/etc/selinux
/etc/selinux/targeted
/etc/selinux/targeted/active
/etc/selinux/targeted/active/modules
...output omitted...
Dies schließt das Lab zur Zugriffs auf Linux-Dateisysteme und zum Auffinden von Dateien ab. Sie haben gelernt, wie Sie Geräte identifizieren, die Festplattennutzung untersuchen, Dateisysteme manuell ein- und aushängen und locate und find mit verschiedenen Kriterien verwenden.
Zusammenfassung
In diesem Lab haben wir praktische Erfahrungen in der Verwaltung von Linux-Dateisystemen auf einem Red Hat Enterprise Linux-System gesammelt. Wir begannen damit, Dateisysteme und Blockgeräte mithilfe von Befehlen wie lsblk zu identifizieren und Kernkonzepte wie Blockgeräte, Partitionen, Dateisysteme und Mountpunkte zu verstehen. Anschließend untersuchten wir, wie man die Dateisystemnutzung mit df und du untersucht und ihre Funktionalitäten zur Berichterstattung über den Festplattenspeicher unterscheidet. Das Lab behandelte auch die wesentliche Fähigkeit, Dateisysteme manuell einzuhängen und auszuhängen, und demonstrierte, wie man Dateisysteminhalte zugänglich macht und sie dann wieder trennt.
Darüber hinaus haben wir uns eingehend mit der effizienten Suche nach Dateien unter Verwendung verschiedener Kriterien befasst. Wir lernten, Dateien nach Namen mit locate und find zu finden und die Unterschiede und geeigneten Anwendungsfälle für jeden Befehl zu verstehen. Das Lab erweiterte dies, indem es lehrte, wie man nach Dateien basierend auf Eigentümerschaft, Berechtigungen, Größe und Zeitattributen sucht, und lieferte leistungsstarke Werkzeuge für die Systemadministration und Fehlerbehebung. Schließlich übten wir die Suche nach Dateien basierend auf ihren spezifischen Dateitypen und schlossen damit einen umfassenden Überblick über die Dateisystemverwaltung und Dateisuchtechniken ab.



