Wie finde ich heraus, welche Dateien und Ordner kürzlich unter Linux gelöscht wurden?

23

Ich habe einen bestimmten Ordner ( /home/sam/officedocuments), der Hunderte von Ordnern und Dateien enthält. Ich glaube, ich habe versehentlich einige Dateien und Ordner gelöscht, bin mir aber nicht sicher.

So finden Sie die Dateien / Ordner:

  • vor kurzem in Linux gelöscht?
  • vor kurzem in Linux geändert?

Ich möchte nur wissen, welche Dateien und Ordner gelöscht wurden. Das Wiederherstellen dieser gelöschten Dateien und Ordner ist für mich nicht wichtig.

Betriebssystem: CentOS

Sumit Gupta
quelle
1
Sie sollten uns mitteilen, welches Dateisystem Sie verwenden. Zum Beispiel mit ext2, ext3 und ext4 Sie könnten wahrscheinlich das ext3grepDienstprogramm verwenden, um Informationen zu gelöschten Dateien zu erhalten. Mit einigen Skripten sollte es möglich sein, eine einfache Anwendung zusammenzustellen, die gelöschte Dateien basierend auf einem bestimmten Verzeichnis auflistet. Diese Dienstprogramme benötigen jedoch unformatierten Zugriff auf die Festplatte und sind daher äußerst gefährlich, wenn sie nicht ordnungsgemäß verwendet werden ( nicht blockierende Nur-Lese-Vorgänge sollten absolut sicher sein, wenn Sie daran denken, dass das gleichzeitige Schreiben auf die Festplatte dazu führen kann, dass der aktuelle Vorgang fehlerhafte Daten zurückgibt ).
GoFundMonica - codidact.org

Antworten:

3

… Vor kurzem unter Linux geändert?

Verwenden Sie find, um nach Änderungszeit zu suchen. So finden Sie beispielsweise Dateien, die in den letzten 3 Tagen bearbeitet wurden:

find /home/sam/officedocuments -mtime -3

Verwenden Sie für "älter als 3 Tage" +3.

… Vor kurzem unter Linux gelöscht?

Ziemlich unmöglich. Wenn eine Datei gelöscht wird, ist sie einfach weg. Auf den meisten Systemen wird dies nirgendwo protokolliert.

Grawity
quelle
Vielen Dank. Ich muss 3 Tage lang 3... verwenden, was ich in den letzten 30Minuten verwenden muss?
Sumit Gupta
Bittet Linux immer um Bestätigung, bevor Dateien / Ordner gelöscht werden?
Sumit Gupta
16
"Ziemlich unmöglich" Das ist einfach falsch und deswegen muss ich das ablehnen. Löschzeiten sind in einigen Dateisystemen gespeichert, ein Beispiel für solche Dateien ist das ext3Dateisystem. ext3grep kann bei der Jagd helfen. Ich habe superuser.com/a/433785/132604 erhalten , das einige Informationen und Links zu Dienstprogrammen enthält, mit denen gelöschte Dateien und Informationen zu diesen gefunden ( möglicherweise auch wiederhergestellt ) werden können. Wenn Sie eine Datei löschen, wird sie in den meisten Dateisystemen nicht tatsächlich entfernt, sondern als Speicherplatz markiert, der bei Bedarf überschrieben werden könnte.
GoFundMonica - codidact.org
Möglicherweise können Sie Dateien aus einer Sicherung wiederherstellen und eine Liste dieser Dateien mit den Dateien im Dateisystem vergleichen. Das würde eine Liste der fehlenden und neu erstellten Dateien ergeben. Die Antwort von Grawity zeigt bereits, dass Sie rechtzeitig filtern können, sodass Sie dies nur auf die gelöschten Dateien beschränken können.
Hennes
11

Sie sollten wahrscheinlich Inotify Tools installieren . Anschließend können Sie mit dem inotifywaitBefehl auf Ereignisse warten, die für das angegebene Verzeichnis eintreten.

Verwenden Sie diese Option, wenn Sie nach gelöschten Dateien und Ordnern suchen möchten

inotifywait -m -r -e delete dir_name

und protokollieren Sie diese Ausgabe in einer Datei.

Hoffe das löst dein Problem

Ravi
quelle
1
Klingt nach dem besten Ansatz dafür. Es gibt eine vielversprechende Cli-App / Daemon namens iwatch , die Sie vielleicht in Ihre Antwort aufnehmen möchten. +1 für die Verwendung der richtigen Werkzeuge, um das Problem zu lösen.
GoFundMonica - codidact.org
ravi, @SampoSarrala - Ist dies zutreffend, wenn ich Dateien im /Stammverzeichnis unter Berücksichtigung der Aktivierung / Deaktivierung von Laufwerken überwachen möchte ? In diesem Fall wäre das einzige, was für die Führung eines Löschprotokolls in Frage kommt , ein Kernel-Modul, in das ein Hook- Vorgang durchgeführt wirdunlink (siehe stackoverflow.com/questions/8588386/… ). Außerdem man inotifywaitheißt es: "--recursive: Warnung: ... diese Option beim Betrachten ... eines großen Baums kann einige Zeit in Anspruch nehmen. Außerdem ... wird die maximale Anzahl an inotifizierten Uhren pro Benutzer erreicht Standardmaximum ist 8192; "
sdaau
@sdaau dmesg [| tail]sollte dir [die letzten] Reittiere anzeigen, wenn du danach fragst.
SeldomNeedy
Ich frage mich, ob es auch eine Möglichkeit gibt, herauszufinden, bei welchem ​​Prozess die Datei gelöscht wurde (z. B. bei einem Cron-Job). Haben Sie einen Fall von Dateien auf mysteriöse Weise verschwinden ...
Nagev
0

Linux fordert im Allgemeinen keine Bestätigung vor dem Entfernen von Dateien an, vorausgesetzt, Sie verwenden sie über rmdie Befehlszeile.

Um nach Dateien zu suchen, die in den letzten 30 Minuten geändert wurden touch --date="HH:MM" /tmp/reference, erstellen Sie mit eine Datei mit dem Namen Referenz mit einem Zeitstempel von vor 30 Minuten (wobei HH: MM 30 Minuten entspricht). Verwenden Sie dann find /home/sam/officedocuments -newer /tmp/reference, um Dateien zu finden, die neuer als die Referenz sind.

Wenn Sie Dateien mit einem GUI-Tool gelöscht haben, befinden sie sich möglicherweise immer noch in einem "Papierkorb". Dies hängt davon ab, was Sie für eine Desktop-Umgebung verwenden. Wenn Sie rmüber die Befehlszeile verwendet haben, versuchen Sie es mit einem der in dieser Antwort genannten Dienstprogramme . (Hat einen Tipp an @Sampo für diesen Link.)

bstpierre
quelle
Sag einfach nicht "für immer gegangen" ... sieh dir Kommentare zu einer anderen Antwort an. Jetzt fühle ich mich wie folgt : xkcd.com/386 :)
GoFundMonica - codidact.org