Einführung
In diesem Lab sammeln Sie praktische Erfahrungen bei der Verwaltung von Linux-Dateisystemen auf einem Red Hat Enterprise Linux (RHEL) System. Sie lernen, Dateisysteme und Blockgeräte zu identifizieren, die Festplattennutzung mithilfe von 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, wodurch Sie Dateien basierend auf verschiedenen Kriterien wie Name, Eigentümer, Berechtigungen, Größe, Zeit und Dateityp suchen können.
Dateisysteme und Blockgeräte identifizieren
In diesem Schritt lernen Sie, wie Sie Dateisysteme und Blockgeräte auf einem Red Hat Enterprise Linux-System identifizieren. Das Verständnis der Speicherorganisation ist grundlegend für die Systemadministration. Wir werden verschiedene Befehle untersuchen, um Blockgeräte und die zugehörigen Dateisysteme aufzulisten und zu prüfen.
Zuerst einige grundlegende Konzepte:
- Blockgerät (Block Device): Ein Blockgerät ist eine Datei, die einen Low-Level-Zugriff auf Speichergeräte ermöglicht. Beispiele sind Festplatten, SSDs und USB-Laufwerke. Unter Linux befinden sich diese normalerweise im Verzeichnis
/dev. - 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 unterschiedliche Zwecke verwendet werden können.
- Dateisystem: 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 dem ein Dateisystem angehängt oder „gemountet“ wird, um dessen Inhalt zugänglich zu machen.
Beginnen wir mit der Auflistung der auf Ihrem System verfügbaren Blockgeräte mithilfe des Befehls lsblk. Dieser Befehl bietet eine baumartige Übersicht aller Blockgeräte und deren Partitionen.
lsblk
Sie sollten eine Ausgabe ähnlich dieser sehen. Ihre VM verwendet möglicherweise Namen wie vda und vdb oder NVMe-Namen wie nvme0n1 und nvme1n1:
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,nvme0n1odernvme1n1) oder der Partition (z. B.vda1,vda2odernvme0n1p2).MAJ:MIN: Major- und Minor-Gerätenummern.RM: Wechselmedium (1 wenn wechselbar, 0 wenn nicht).SIZE: Die Größe des Geräts oder der Partition.RO: Schreibgeschützt (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 aktuell eingehängt ist.
Als Nächstes untersuchen wir die Dateisysteme und deren Nutzung mit dem Befehl df. Der Befehl df meldet die Speicherplatznutzung des Dateisystems.
df
Die Ausgabe zeigt verschiedene Dateisysteme, deren Gesamtgröße, belegten Speicherplatz, verfügbaren Speicherplatz und 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 bei den Größen, können Sie die Option -h für ein menschenlesbares Format verwenden (z. B. M für MiB, G für GiB).
df -h
Sie sehen die Größen nun 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
Verwenden wir abschließend den Befehl lsblk -fp, um den vollständigen Pfad der Geräte, ihre UUIDs (Universally Unique Identifiers) und Dateisystemtypen aufzulisten. UUIDs sind stabile Identifikatoren, die gleich bleiben, selbst wenn sich Gerätenamen ändern, was sie für konsistentes Mounten 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 Identifikator für jedes Dateisystem bereitstellt. Dies ist entscheidend für das zuverlässige Einhängen von Dateisystemen, insbesondere in Konfigurationsdateien wie /etc/fstab.
Bevor Sie zum nächsten Schritt übergehen, speichern Sie einen kurzen Bericht in Ihrem Projektverzeichnis, damit Sie die Informationen zu Blockgeräten und Dateisystemen später erneut einsehen können.
{
lsblk
echo
df -h
echo
lsblk -fp
} > ~/project/filesystem_overview.txt
Sie können die Erstellung des Berichts bestätigen mit:
cat ~/project/filesystem_overview.txt
Dateisystemnutzung mit df und du untersuchen
In diesem Schritt vertiefen Sie die Untersuchung der Dateisystemnutzung mithilfe der Befehle df und du. Während df einen Überblick über die Festplattennutzung für eingehängte Dateisysteme bietet, wird du (disk usage) verwendet, um den Speicherplatzbedarf für bestimmte Dateien oder Verzeichnisse zu schätzen. Der Unterschied und das Wissen, wann welcher Befehl zu verwenden ist, sind entscheidend für ein effektives Festplattenmanagement.
Beginnen wir damit, den Befehl df mit seiner menschenlesbaren Option erneut zu betrachten. Dieser Befehl eignet sich hervorragend, um eine schnelle Zusammenfassung darüber zu erhalten, wie viel Speicherplatz auf allen eingehängten Dateisystemen belegt und 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
Lassen Sie uns nun den Befehl du erkunden. Im Gegensatz zu df berechnet du den von Dateien und Verzeichnissen innerhalb eines angegebenen Pfades belegten Speicherplatz. 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) zu sehen, verwenden Sie du ohne Argumente. Dies listet die Größe jeder Datei und jedes Unterverzeichnisses innerhalb von ~/project auf.
du
Die Ausgabe kann umfangreich sein und zeigt die Größen standardmäßig in Kilobyte an:
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
Dies zeigt die Größen in menschenlesbaren Einheiten an:
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 .
Oft interessiert man sich eher für die Gesamtgröße eines Verzeichnisses als für die Größe jeder einzelnen Datei und jedes Unterverzeichnisses. Hierfür können Sie die Option -s (summary) zusammen mit -h verwenden. Prü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 deren Größen meldet. Wir erstellen ein Verzeichnis namens test_data und darin einige Dateien.
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 zu sehen.
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 Sie abschließend zurück in Ihr ~/project-Verzeichnis und prüfen Sie die Gesamtgröße von test_data mit du -sh.
cd ~/project
du -sh test_data
Dies zeigt die zusammengefasste Größe des Verzeichnisses test_data:
24K test_data
Dies demonstriert, wie du verwendet werden kann, um den Speicherplatzverbrauch innerhalb bestimmter Verzeichnisse genau zu bestimmen und so den Speicher effektiv zu verwalten.
Dateisysteme manuell ein- und aushängen
In diesem Schritt lernen Sie, wie Sie Dateisysteme manuell ein- und aushängen. Das Einhängen (Mounten) eines Dateisystems macht dessen Inhalt über ein bestimmtes Verzeichnis (Einhängepunkt) in der Dateisystemhierarchie zugänglich. Das Aushängen (Unmounten) trennt das Dateisystem von seinem Einhängepunkt und macht dessen Inhalt unzugänglich, 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 die zusätzliche, nicht eingehängte Festplatte, die in Ihrer LabEx-VM-Umgebung verfügbar ist. Abhängig von der VM könnte diese Festplatte /dev/vdb, /dev/nvme1n1 oder ähnlich heißen, daher werden wir sie erkennen, anstatt einen Gerätenamen fest zu kodieren.
Identifizieren wir zuerst die Root-Festplatte und die zusätzliche Festplatte, die Sie formatieren und einhängen werden.
ROOT_PARTITION=$(findmnt -n -o SOURCE /)
ROOT_DISK="/dev/$(lsblk -no PKNAME \"$ROOT_PARTITION\")"
DATA_DISK=$(lsblk -dnpo NAME,TYPE | awk '$2 == "disk" {print $1}' | grep -vx "$ROOT_DISK" | head -n 1)
echo "$DATA_DISK"
Dieser Befehl sollte den Pfad zur zusätzlichen Festplatte ausgeben, wie z. B. /dev/vdb oder /dev/nvme1n1.
/dev/nvme1n1
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 Mounts zu verwenden oder ein Unterverzeichnis darin zu erstellen. Erstellen wir ein neues Verzeichnis namens mydata in Ihrem ~/project-Verzeichnis, das als Einhängepunkt dienen soll.
mkdir ~/project/mydata
Nun müssen wir die zusätzliche Festplatte, die in $DATA_DISK gespeichert ist, 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 "$DATA_DISK"
Sie sehen eine Ausgabe, die die Erstellung des XFS-Dateisystems anzeigt. Der Gerätename in der Ausgabe entspricht Ihrer VM:
meta-data=/dev/nvme1n1 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 $DATA_DISK nun ein XFS-Dateisystem hat, können Sie es an Ihren Einhängepunkt ~/project/mydata anhängen. Der Befehl mount erfordert sudo-Rechte.
sudo mount "$DATA_DISK" ~/project/mydata
Um zu überprüfen, ob das Dateisystem erfolgreich eingehängt wurde, verwenden Sie erneut den Befehl df -h. Sie sollten Ihr erkanntes Laufwerk mit /home/labex/project/mydata als Einhängepunkt aufgelistet sehen.
df -h
Suchen Sie in der Ausgabe nach Ihrem erkannten Laufwerk:
Filesystem Size Used Avail Use% Mounted on
...
/dev/nvme1n1 40G 318M 40G 1% /home/labex/project/mydata
Jetzt können Sie Dateien und Verzeichnisse innerhalb von ~/project/mydata erstellen, die auf der Festplatte in $DATA_DISK gespeichert werden. 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 mit der Verwendung eines eingehängten Dateisystems fertig sind, ist es wichtig, es auszuhängen, um Datenbeschädigungen zu vermeiden, insbesondere bevor ein physisches Gerät entfernt wird. Verwenden Sie den Befehl umount, um das Dateisystem auszuhängen.
sudo umount ~/project/mydata
Wenn der Befehl zum Aushängen mit einem Fehler "target is busy" fehlschlägt, bedeutet dies, dass ein Prozess noch auf den Einhängepunkt zugreift. Dies passiert oft, wenn sich Ihr aktuelles Arbeitsverzeichnis innerhalb des eingehängten Dateisystems befindet. Um dies zu beheben, wechseln Sie in ein Verzeichnis außerhalb des Einhängepunkts, zum Beispiel in Ihr Home-Verzeichnis (~).
cd ~
Versuchen Sie dann erneut, es auszuhängen:
sudo umount ~/project/mydata
Überprüfen Sie nach dem Aushängen, ob Ihr erkanntes Laufwerk nicht mehr eingehängt ist, indem Sie erneut df -h prüfen.
df -h
Sie sollten Ihr erkanntes Laufwerk nicht mehr unter /home/labex/project/mydata eingehängt sehen.
Filesystem Size Used Avail Use% Mounted on
...
## Ihr zusätzliches Laufwerk sollte hier nicht mehr aufgelistet sein.
Damit ist der Prozess des manuellen Ein- und Aushängens eines Dateisystems abgeschlossen.
Dateien nach Name mit locate und find suchen
In diesem Schritt lernen Sie, wie Sie Dateien auf Ihrem System mithilfe zweier leistungsstarker Befehle finden: locate und find. Beide Befehle helfen Ihnen bei der Suche nach Dateien, arbeiten jedoch 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. Das bedeutet jedoch, dass er möglicherweise keine Dateien findet, die seit der letzten Datenbankaktualisierung erstellt oder gelöscht wurden. Die Datenbank wird normalerweise täglich durch einen Cron-Job aktualisiert, aber Sie können eine Aktualisierung erzwingen.
Auf diesem Image ist der Befehl locate bereits verfügbar. Bestätigen Sie, dass der Befehl existiert, bevor Sie seine Datenbank aktualisieren.
command -v locate
Sie sollten eine Ausgabe ähnlich dieser sehen:
/usr/bin/locate
Nach der Installation müssen Sie die locate-Datenbank aktualisieren. Dieser Befehl erfordert sudo-Rechte.
sudo updatedb
Dieser Befehl läuft im Hintergrund und kann je nach Größe Ihres Dateisystems einige Augenblicke dauern.
Suchen wir nun nach einer gängigen Systemdatei, wie passwd.
locate passwd
Sie sehen eine Liste von Pfaden, 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ß-/Kleinschreibung durchzuführen, verwenden Sie die Option -i. Suchen wir nach Dateien, die "messages" enthalten, ohne auf die Großschreibung zu achten.
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. Finden wir die ersten 5 Vorkommen von "passwd".
locate -n 5 passwd
Dies zeigt nur die ersten 5 Treffer:
/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 als locate macht, aber sicherstellt, dass er alle Dateien findet, die Ihren Kriterien entsprechen, einschließlich derer, die erst kürzlich erstellt wurden. Er bietet auch wesentlich leistungsfähigere Suchoptionen.
Die grundlegende Syntax für find lautet find [Pfad] [Ausdruck]. Wenn kein Pfad angegeben ist, wird das aktuelle Verzeichnis durchsucht.
Suchen wir nach der Datei sshd_config, beginnend im Root-Verzeichnis (/).
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 Dateinamenmuster in Anführungszeichen zu setzen, um zu verhindern, dass die Shell es vorzeitig erweitert. Finden wir alle Dateien, die auf .txt enden, in Ihrem ~/project-Verzeichnis.
find ~/project -name '*.txt'
Wenn Sie im vorherigen Schritt file1.txt, file2.txt und file3.txt erstellt haben, sollten diese aufgelistet werden:
/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ß-/Kleinschreibung mit find durchzuführen, verwenden Sie die Option -iname. Suchen wir nach Dateien, die "README" enthalten (Groß-/Kleinschreibung ignoriert), im Verzeichnis /usr/share/doc.
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 erkunden werden.
Bevor Sie fortfahren, speichern Sie die wichtigsten locate- und find-Ergebnisse, damit Sie sie später vergleichen können.
{
locate -n 5 passwd
echo "---"
find ~/project -name '*.txt'
} > ~/project/search-results.txt
Sie können die gespeicherten Ergebnisse überprüfen mit:
cat ~/project/search-results.txt
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 jenseits ihres Namens zu lokalisieren. Dazu gehört die Suche nach Eigentümer, Berechtigungen, Größe und Änderungszeit. Diese erweiterten Suchfunktionen sind für Systemadministrationsaufgaben wie Auditing, Bereinigung und Fehlerbehebung unerlässlich.
Dateien nach Eigentümer finden
Sie können nach Dateien suchen, die einem bestimmten Benutzer oder einer Gruppe gehören, indem Sie die Optionen -user bzw. -group verwenden. Sie können den Benutzer-/Gruppennamen oder deren numerische ID angeben.
Finden wir alle Dateien in Ihrem Home-Verzeichnis (~), die dem Benutzer labex gehören.
find ~ -user labex
Dies listet viele Dateien auf, 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...
Ebenso, um Dateien zu finden, die der Gruppe labex gehören:
find ~ -group labex
Die Ausgabe ist ähnlich, da labex normalerweise die primäre Gruppe für den Benutzer labex ist.
Sie können auch nach User ID (UID) oder Group ID (GID) suchen. Der Benutzer labex hat normalerweise eine UID und GID von 1000.
find ~ -uid 1000
find ~ -gid 1000
Dateien nach Berechtigungen finden
Die Option -perm des Befehls find ermöglicht es Ihnen, nach Dateien mit bestimmten Berechtigungen zu suchen. Berechtigungen können im oktalen (z. B. 755) oder symbolischen (z. B. u=rwx,g=rx,o=rx) Modus angegeben werden.
Erstellen wir eine Testdatei in Ihrem ~/project-Verzeichnis mit bestimmten Berechtigungen.
touch ~/project/permission_test.txt
chmod 644 ~/project/permission_test.txt
Finden wir nun Dateien in ~/project, die exakt 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 einen führenden / oder - mit den oktalen Berechtigungen verwenden:
/: Stimmt überein, wenn irgendeines der angegebenen Berechtigungsbits gesetzt ist.-: Stimmt überein, wenn alle der angegebenen Berechtigungsbits gesetzt sind.
Finden wir Dateien in ~/project, bei denen andere mindestens Leseberechtigung haben (o=r oder 004).
find ~/project -perm -004
Dies listet permission_test.txt und andere Dateien auf, die anderen Lesezugriff gewähren.
/home/labex/project/permission_test.txt
...output omitted...
Dateien nach Größe finden
Die Option -size ermöglicht es Ihnen, nach Dateien basierend auf ihrer Größe zu suchen. Sie können die Größe mit Einheiten angeben (z. B. k für Kilobyte, M für Megabyte, G für Gigabyte). Sie können auch + für "größer als" und - für "kleiner als" verwenden.
Finden wir Dateien in Ihrem Verzeichnis ~/project/test_data, die exakt 1 Kilobyte groß sind.
find ~/project/test_data -size 1k
Sie sollten file1.txt sehen:
/home/labex/project/test_data/file1.txt
Finden Sie nun 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.
Finden wir Dateien in Ihrem ~/project-Verzeichnis, die in den letzten 60 Minuten geändert wurden.
find ~/project -mmin -60
Dies beinhaltet wahrscheinlich permission_test.txt und die Dateien in test_data, falls 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 Suchanfragen zu erstellen, mit denen Sie Dateien auf Ihrem System effizient verwalten können.
Speichern Sie zwei Ihrer Suchergebnisse, damit die nächste Überprüfung bestätigen kann, dass die richtigen Dateien gefunden wurden.
find ~/project -perm 644 > ~/project/find-perm-results.txt
find ~/project/test_data -size +5k > ~/project/find-size-results.txt
Nach Dateien basierend auf dem 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 Pfades lokalisieren 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 Dateid: Verzeichnisl: Symbolischer Link (Symlink)b: Blockgerätc: Zeichengerät (Character device)p: Benannte Pipe (FIFO)s: Socket
Beginnen wir mit der Suche nach allen Verzeichnissen innerhalb Ihres ~/project-Verzeichnisses.
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 innerhalb Ihres ~/project-Verzeichnisses.
find ~/project -type f
Dies listet Dateien wie file1.txt, file2.txt und file3.txt auf, 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 auf file1.txt in Ihrem ~/project-Verzeichnis.
ln -s ~/project/test_data/file1.txt ~/project/link_to_file1.txt
Überprüfen Sie mit ls -l, ob der Symlink 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 innerhalb Ihres ~/project-Verzeichnisses.
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 normalerweise im Verzeichnis /dev.
find /dev -type b
Dies listet Blockgeräte wie vda, vda1, vda2 usw. auf:
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2
/dev/nvme0n1p3
/dev/nvme1n1
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...
Speichern Sie die Suchergebnisse für symbolische Links, bevor Sie das Lab beenden.
find ~/project -type l > ~/project/find-type-results.txt
Damit ist das Lab zum Zugriff auf Linux-Dateisysteme und zum Suchen von Dateien abgeschlossen. Sie haben gelernt, wie man Geräte identifiziert, die Festplattennutzung untersucht, Dateisysteme manuell ein- und aushängt und locate sowie find mit verschiedenen Kriterien verwendet.
Zusammenfassung
In diesem Lab haben wir praktische Erfahrungen bei 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 grundlegende Konzepte wie Blockgeräte, Partitionen, Dateisysteme und Einhängepunkte zu verstehen. Anschließend untersuchten wir, wie die Dateisystemnutzung mit df und du überprüft wird, wobei wir zwischen deren Funktionalitäten zur Meldung von Speicherplatz unterschieden. Das Lab behandelte auch die wesentliche Fähigkeit, Dateisysteme manuell ein- und auszuhängen, und demonstrierte, wie man Dateisysteminhalte zugänglich macht und wieder trennt.
Darüber hinaus haben wir uns mit der effizienten Suche nach Dateien anhand verschiedener Kriterien befasst. Wir haben gelernt, Dateien mit locate und find nach Namen zu suchen und die Unterschiede sowie die geeigneten Anwendungsfälle für jeden Befehl zu verstehen. Das Lab erweiterte dies, indem es lehrte, wie man nach Dateien basierend auf Eigentümer-, Berechtigungs-, Größen- und Zeitattributen sucht, was leistungsstarke Werkzeuge für die Systemadministration und Fehlerbehebung bietet. Abschließend haben wir die Suche nach Dateien basierend auf ihren spezifischen Dateitypen geübt und damit einen umfassenden Überblick über die Dateisystemverwaltung und Dateisuchtechniken erhalten.



