Tutoriel Linux

Suchen unter Linux: Eine Datei finden, ohne den gesamten Server manuell durchsuchen zu müssen.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Wenn man weiß, dass eine Datei irgendwo auf einem Server existiert, aber nicht wo, ist die Versuchung oft groß, Ordner für Ordner zu durchsuchen. Keine gute Idee. Unter Linux finden ist genau dafür gemacht: Suche nach Name, Typ, Größe, Datum, Rechte, und handle erst, wenn das Ergebnis eindeutig ist.

Ich rate Ihnen, den Befehl mit Bedacht einzusetzen, insbesondere auf einem Produktivserver. Ein `find`-Befehl auf Root-Ebene kann eine große Anzahl von Dateien durchsuchen, Berechtigungsfehler anzeigen und die Festplatte unnötig belasten. Es geht nicht darum, den größtmöglichen Befehl einzugeben, sondern den Suchbereich schnell einzugrenzen.

Tux verwendet eine Lupe, um auf einem Linux-Server nach Dateien zu suchen.
Mit Find können Sie eine Datei in einer Linux-Verzeichnisstruktur finden, ohne jeden Ordner manuell durchsuchen zu müssen.

Beginnen Sie damit, am richtigen Ort zu suchen.

Das Grundprinzip ist einfach: Sie geben einen Startordner und anschließend ein Suchkriterium an.

find /etc -name "ssh_config"

Hier sucht Linux nach einer Datei mit dem Namen ssh_config In /usw und deren Unterordner. Wenn Sie bereits wissen, wo sich die Datei befinden soll, beginnen Sie dort. Das ist schneller, übersichtlicher und Sie vermeiden unnötige Systemdurchsuchungen.

Um die Groß-/Kleinschreibung zu ignorieren, verwenden Sie -iname :

find /var/www -iname "*.conf"

Wenn Sie vom Stammverzeichnis aus beginnen, können Sie mit folgenden Meldungen rechnen: Zugriff verweigertDas ist nicht unbedingt ein Problem. Man kann sie ausblenden, sollte das aber nicht systematisch tun, wenn man gezielt nach einem Rechteproblem sucht.

find / -name "nginx.conf" 2>/dev/null

Suche nach Dateityp einschränken

Auf einem Server kann ein Name einer Datei, einem Ordner, einem symbolischen Link oder etwas anderem entsprechen. Hinzufügen -Art um unnötige Ergebnisse zu vermeiden.

find /var/log -type f -name "*.log"
find /var/www -type d -name "cache"
find /usr/bin -type l -name "python*"

-Typ f zielt auf Standarddateien ab. -Typ d zielt auf Ordner ab. -Typ l Es zielt auf symbolische Verknüpfungen ab. Dieser kleine Filter reduziert das Rauschen in den Ergebnissen erheblich.

Sie können die Tiefe auch begrenzen, wenn Sie nicht zu weit in den Baum vordringen möchten:

find /var/www -maxdepth 2 -type d -name "cache"

Dies ist sehr nützlich für Websites, Backups oder Benutzerordner mit vielen Unterverzeichnissen.

Suchen Sie die großen Dateien, bevor Sie irgendetwas löschen.

Wenn auf einem Server der Speicherplatz knapp wird, kann „find“ helfen, große Dateien zu finden. Beginnen Sie damit, diese aufzulisten, anstatt sie zu löschen.

find /var -type f -size +100M -print
find /home -type f -size +1G -print

Um die Größen in lesbarer Form anzuzeigen, können Sie Folgendes ausführen: ls -lh zu jedem Ergebnis:

find /var -type f -size +100M -exec ls -lh {} +

Wenn Ihr Ziel darin besteht, Speicherplatz freizugeben, sollten Sie nicht direkt zu rmÜberprüfen Sie zunächst Ihre Funde, insbesondere in /var/lib, /var/log oder Anwendungsordner. Für eine Datenbankdatei oder einen Cache kann eine spezielle Löschmethode erforderlich sein.

Für eine umfassendere Auseinandersetzung mit dem Thema können Sie diese durch den Leitfaden ergänzen. Befehle zur Verwendung bei vollem Linux-Festplattenspeicher.

Suche nach Änderungsdatum

Um herauszufinden, was sich kürzlich geändert hat, sind die Datumsoptionen sehr hilfreich. Zum Beispiel Dateien, die in den letzten 7 Tagen geändert wurden:

find /etc -type f -mtime -7

Dateien, die vor mehr als 30 Tagen geändert wurden:

find /var/log -type f -mtime +30

-mzeit Funktioniert in Tagen. Für eine präzisere Suche schauen Sie auch hier nach: -mmminDas funktioniert in wenigen Minuten:

find /tmp -type f -mmin -60

Dies ist nützlich nach einer Konfigurationsänderung, einem Update oder einem Skript, das Dateien generiert hat, ohne Ihnen klar zu sagen, wo diese sich befinden.

Filtern nach Rechten, ohne Berechtigungen zu verletzen

Find kann auch anhand von Berechtigungen suchen. Um beispielsweise ausführbare Skripte in einem Ordner zu finden:

find /usr/local/bin -type f -perm /111

Um Dateien zu identifizieren, die zu leicht zugänglich sind, können Sie nach Dateien suchen, die von jedem bearbeitet werden können:

find /var/www -type f -perm -002 -exec ls -lh {};

Korrigieren Sie eine Ergebnisliste nicht mit einem chmod Globale Berechtigungen ohne Kontextverständnis können schnell zu Anwendungsabstürzen führen. Linux-Berechtigungen können unter Umständen zu Anwendungsabstürzen führen. Falls Sie diesen Punkt noch einmal überprüfen möchten, lesen Sie bitte den Artikel zu diesem Thema. rekursives chmod unter Linux erklärt genau, warum wir weiterhin vorsichtig sein müssen.

Verwendung von -exec ohne Auslösen einer Katastrophe

-exec Es ermöglicht Ihnen, einen Befehl auf die gefundenen Dateien anzuwenden. Es ist sehr mächtig und bietet daher auch das größte Schadenspotenzial.

Beginnen Sie immer damit, die Ergebnisse anzuzeigen:

find /tmp -type f -name "*.tmp" -print

Nur wenn die Liste korrekt ist, können Sie vor der Löschung eine Bestätigung anfordern:

find /tmp -type f -name "*.tmp" -exec rm -i {} +

Das Paar {} stellt die gefundenen Dateien dar. + Die Funktion `find` weist die Funktion an, nach Möglichkeit mehrere Ergebnisse in einem einzigen Befehl zusammenzufassen, wodurch vermieden wird, für jede Datei einen Prozess zu starten.

find /var/log -type f -name "*.log" -exec ls -lh {} +

Mein Rat ist einfach: Löschen Sie nichts automatisch, bevor Sie die Liste überprüft haben. Auf einem Server lohnt es sich nicht, für eine Sekunde Speicherplatz zu sparen und dafür ein Backup wiederherstellen zu müssen.

Eine schnelle Methode vor dem Start der Suche in der Produktion

  • Beginnen Sie mit der genauesten Datei, die möglich ist;
  • hinzufügen -Typ f, -Typ d Oder -Typ l so schnell wie möglich;
  • verwenden -maxtiefe wenn Sie eine zu tiefgehende Suche vermeiden möchten;
  • Zeigen Sie die Ergebnisse mit an -drucken Oder -exec ls -lh bevor Sie Maßnahmen ergreifen;
  • Die destruktiven Befehle sollten zuletzt ausgeführt werden, wenn möglich mit einer Bestätigung.

Als Referenzdokumentation können Sie das GNU Findutils-Handbuch konsultieren unter finden und die Seite finden(1) Aus man7. Falls Sie die Protokolle nach dem Auffinden einer Datei verfolgen müssen, finden Sie die Anleitung unter tail unter Linux Diese Methode ergänzt sie gut.

sudo apt update && sudo apt upgrade