Wie die Liste der zuletzt gelöschten Dateien aus einem Verzeichnis?
Ich bin mir auch nicht sicher, ob dies problemlos möglich ist, aber ich möchte, um eine Liste der Dateien, die wurden vor kurzem gelöscht, ein Verzeichnis ist, rekursiv, wenn möglich.
Ich bin auf der Suche nach einer Lösung, die nicht erfordert die Erstellung einer temporären Datei, die eine Momentaufnahme der ursprünglichen Verzeichnisstruktur, gegen die zu vergleichen, da schreib-Zugriff möglicherweise nicht immer verfügbar. Edit: Wenn es möglich ist, das gleiche Ergebnis erzielen, indem Sie die Speicherung der snapshot in eine shell-variable anstelle einer Datei, das würde mein problem lösen.
Etwas wie:
find /some/directory -type f -mmin -10 -deletedFilesOnly
Edit: OS: ich verwende Ubuntu 14.04 LTS, aber der Befehl(en) würde wahrscheinlich ausführen in einer Vielzahl von Linux-Boxen oder Docker-Containern, die meisten oder alle von denen sollten mit ext4
, und zu denen würde ich mich wahrscheinlich nicht zugreifen, um änderungen vorzunehmen.
nur Ding ich kann denken ist, WENN die Datei bearbeitet wurde und eine Sicherung gehalten wurde, vom Bearbeiten der Datei, Suche für eine Datei in einem Verzeichnis befindet, wie
foo.bar~
hat aber keine foo.bar
im Verzeichnis so vorausgesetzt die Datei wurde gelöscht.die Antwort hängt von der Datei-system verwendet wird, nicht auf das Betriebssystem selbst. der einzige Bezug zu
linux
ist das, was Sie fordert, ist nicht möglich für die meisten gängigen linux-Dateisysteme.aber mit den meisten Datei-Systeme haben viele gesehen, unter linux mit dem CLI-Schnittstelle ist es meist unmöglich. So können Sie Sie uns sagen, welches Linux-Betriebssystem Sie verwenden?
InformationsquelleAutor Marco Roy | 2015-08-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
debugfs
Dienstprogramm,Führen Sie zuerst
debugfs /dev/hda13
im terminal (ersetzt/dev/hda13
mit Ihrem eigenen Platte/partition).(HINWEIS: finden Sie den Namen Ihrer Festplatte, indem Sie
df /
im terminal).Einmal im debug-Modus, können Sie den Befehl verwenden
lsdel
Liste inodes entsprechenden Dateien gelöscht.Zu bekommen Pfade der diese gelöschten Dateien, die Sie verwenden können
debugfs -R "ncheck 320236"
ersetzen Sie die Zahl mit Ihrem bestimmten inode.Von hier aus können Sie auch prüfen Sie den Inhalt der gelöschten Dateien mit
cat
. (HINWEIS: Sie können auch wieder von hier, wenn nötig).Großen Beitrag zu diesem hier.
lsdel
zeigt Sie inodes, gehörte zu Dateien, die gelöscht wurden, ist es sowieso zu sehen, die Namen die Dateien löschen?Ich bin mir nicht sicher, ob es einen Weg gibt, um die Ausgabe aller Dateinamen, aber Sie können abrufen des Inhalts einer Datei mit der
cat
Befehl. Wie diesecat <32611>
ersetzen die Nummer der inode, die Sie überprüfen möchten.Dass der Inhalt von einer unbekannten Gruppe von Dateien. Die Frage, die für die Identität der gelöschten Dateien-nicht deren Inhalte.
Bearbeitet erklären abrufen Dateinamen von gelöschten Dateien.
InformationsquelleAutor nextstep
Danke für Eure Kommentare & Antworten Jungs.
debugfs
scheint eine interessante Lösung zu den ursprünglichen Anforderungen, aber es ist ein bisschen übertrieben für die einfache & Licht-Lösung, die ich suchte; wenn ich verstehen richtig, muss der kernel gebaut werden, mitdebugfs
unterstützen und das Ziel-Verzeichnis muss in einemdebugfs
montieren. Leider nicht wirklich für meinen Gebrauch-Fall; ich muss in der Lage sein, eine Lösung für bestehende, "basic" - Kernel und-Verzeichnisse.Als dies scheint praktisch unmöglich zu erreichen, habe ich in der Lage, zu verhandeln und eine Lockerung der Anforderungen bis auf die Auflistung der Menge von Dateien, wurden vor kurzem gelöscht, ein Verzeichnis ist, rekursiv, wenn möglich.
Dies ist die Lösung, die ich landete Umsetzung:
find
Befehls-Pipe, die inwc
zu zählen, die ursprüngliche Anzahl von Dateien im target Verzeichnis (rekursiv). Das Ergebnis kann dann leicht gespeichert werden in einem shell-oder script-variable, ohne Schreibzugriff auf die Datei system.DEL_SCAN_ORIG_AMOUNT=$(find /some/directory -type f | wc -l)
DEL_SCAN_NEW_AMOUNT=$(find /some/directory -type f | wc -l)
DEL_SCAN_DEL_AMOUNT=$(($DEL_SCAN_ORIG_AMOUNT - $DEL_SCAN_NEW_AMOUNT));
DEL_SCAN_ORIG_AMOUNT=$DEL_SCAN_NEW_AMOUNT
if [ $DEL_SCAN_DEL_AMOUNT -gt 0 ]; then echo "$DEL_SCAN_DEL_AMOUNT deleted files"; fi;
Leider ist diese Lösung nicht alles berichten, wenn die gleiche Menge von Dateien wurden erstellt und gelöscht, während ein Intervall, aber das ist nicht die riesige Problem für meinen Anwendungsfall.
Um dies zu umgehen, müsste ich speichern Sie die aktuelle Liste der Dateien anstelle von der Menge, aber ich habe nicht in der Lage zu machen, dass die Arbeit mit shell-Variablen. Wenn jemand das herausfinden könnten, würde ich mir helfen immens, wie es wäre, erfüllen die ursprünglichen Anforderungen!
Ich würde auch gerne wissen, ob jemand Kommentare auf eine der beiden Ansätze.
InformationsquelleAutor Marco Roy