CHKDSK: NTFS-Dateinummern in Namen auflösen

Manchmal muss man leider CHKDSK auf seiner Festplatte ausführen oder es wird automatisch von Windows gestartet. Dann kann es vorkommen, dass angezeigt wird, dass irgendein Indexeintrag aus Datei xxx gelöscht wurde. Das heißt nichts anderes, als dass eine Datei aus einem Ordner gelöscht wurde. Der Name der gelöschten Datei wird im 8.3-Format angezeigt aber nicht, als welchem Vereichnis. Das wird nur als Datei xxx angegeben. Um die gelöschte Datei aus einem Backup wiederherstellen zu können, muss man natürlich wissen, wo die denn nun fehlen soll. Leider bietet Microsoft direkt keine Möglichkeit an, die Nummer des Verzeichnisses in einen Pfad auzulösen.

Es gibt aber ein Tool nfi, mit dem man über einen kleinen Umweg das erreichen kann. Man bekommt es über die OEM-Tools von Microsoft. nfi gibt einem zu einem Laufwerk alle Dateinummern und den zugehörigen Pfad aus. Super Sache. Leider hat man schnell mehrere zigtausend Dateien auf einer Platte (Ordner sind intern nichts anderes als Dateien, die Dateien enthalten) und bekommt eine ellenlange Liste. Hier hilft gawk bzw. awk weiter.

Hier einmal ein Beispiel:

Dateisystem auf D: wird überprüft.
Der Typ des Dateisystems ist NTFS.
Die Volumebezeichnung lautet Daten.
Einer der Datenträger muss auf Konsistenz überprüft werden.
Sie können die Datenträgerüberprüfung abbrechen, aber es
wird ausdrücklich empfohlen, den Vorgang fortzusetzen.
Die Datenträgerüberprüfung wird jetzt ausgeführt.

CHKDSK überprüft Dateien (Phase 1 von 3)...
124160 Datensätze verarbeitet. Dateiüberprüfung beendet.
Verwaistes Datensatzsegment 37700 wird gelöscht.
Verwaistes Datensatzsegment 37702 wird gelöscht.
829 große Datensätze verarbeitet. 0 ungültige Datensätze verarbeitet. 0 E/A-Datensätze verarbeitet. 0 Analysedatensätze verarbeitet. CHKDSK überprüft Indizes (Phase 2 von 3)...
Der Indexeintrag für die Objektkennung in der Datei 0x19 verweist auf Datei 0x9346,
aber diese Datei enthält keine Objektkennung.
Ein Indexeintrag wird aus dem Index $O der Datei 25 gelöscht.
Der Indexeintrag für die Objektkennung in der Datei 0x19 verweist auf Datei 0x9344,
aber diese Datei enthält keine Objektkennung.
Ein Indexeintrag wird aus dem Index $O der Datei 25 gelöscht.
Die Objektkennung im Indexeintrag in der Datei 0x19 ist ungültig.
Der Eintrag verweist auf Datei 0x9347.
b6 03 34 f3 e9 ce dd 11 87 e4 00 30 1b bb a9 32 ..4........0...2
47 93 00 00 00 00 04 00 3a 0e 6d 58 b4 52 2f 42 G.......:.mX.R/B
----------------------------------------------------------------------
b6 03 34 f3 e9 ce dd 11 87 e4 10 30 1b bb a9 32 ..4........0...2
47 8e f4 ff 00 00 00 00 00 00 00 00 00 00 00 00 G...............
Ein Indexeintrag wird aus dem Index $O der Datei 25 gelöscht.
Die Objektkennung in der Datei 0x9347 kommt nicht im Index
für die Objektkennung in der Datei 0x19 vor.
Ein Indexeintrag wird in Index $O der Datei 25 eingefügt.
Der Indexeintrag 16 Die Peitschen.mp3 von Index $I30 in der Datei 0x9334 verweist auf die nicht verwendete Datei 0x9344.
Indexeintrag 16 Die Peitschen.mp3 in Index $I30 der Datei 37684 wird gelöscht.
Der Indexeintrag 16DIEP~1.MP3 von Index $I30 in der Datei 0x9334 verweist auf die nicht verwendete Datei 0x9344.
Indexeintrag 16DIEP~1.MP3 in Index $I30 der Datei 37684 wird gelöscht.
Der Indexeintrag Unknown Album von Index $I30 in der Datei 0x9358 verweist auf die nicht verwendete Datei 0x9346.
Indexeintrag Unknown Album in Index $I30 der Datei 37720 wird gelöscht.
Der Indexeintrag UNKNOW~1 von Index $I30 in der Datei 0x9358 verweist auf die nicht verwendete Datei 0x9346.
Indexeintrag UNKNOW~1 in Index $I30 der Datei 37720 wird gelöscht.
143136 Indexeinträge verarbeitet. Indexüberprüfung beendet.
CHKDSK überprüft nicht indizierte Dateien, um die Verbindung mit dem ursprünglichen Verzeichnis wiederherzustellen.
1 nicht indizierte Dateien überprüft. CHKDSK stellt verbleibende nicht indizierte Dateien wieder her.
1 nicht indizierte Dateien wiederhergestellt. CHKDSK überprüft Sicherheitsbeschreibungen (Phase 3 von 3)...
124160 SDs/SIDs verarbeitet. 48 nicht verwendete Indexeinträge aus Index $SII der Datei 0x9 werden aufgeräumt.
48 nicht verwendete Indexeinträge aus Index $SDH der Datei 0x9 werden aufgeräumt.
48 nicht verwendete Sicherheitsbeschreibungen werden aufgeräumt.
Überprüfung der Sicherheitsbeschreibungen beendet.
9489 Datendateien verarbeitet. CHKDSK überprüft USN-Journal...
35308048 USN-Bytes verarbeitet. Die Überprüfung von USN-Journal ist abgeschlossen.
CHKDSK hat freien Speicher gefunden, der in der MFT-Bitmap (Master
File Table) als zugeordnet gekennzeichnet ist.
CHKDSK hat freien Speicher gefunden, der in der Volumebitmap als
zugeordnet gekennzeichnet ist.
Windows hat Probleme im Dateisystem behoben.

2861458 MB Speicherplatz auf dem Datenträger insgesamt.
852394484 KB in 113708 Dateien
51784 KB in 9491 Indizes
0 KB in fehlerhaften Sektoren
314240 KB vom System benutzt
65536 KB von der Protokolldatei belegt
2077373504 KB auf dem Datenträger verfügbar

4096 Bytes in jeder Zuordnungseinheit
732533503 Zuordnungseinheiten auf dem Datenträger insgesamt
519343376 Zuordnungseinheiten auf dem Datenträger verfügbar

Interne Informationen:
00 e5 01 00 4a e1 01 00 ec a6 02 00 00 00 00 00 ....J...........
a2 de 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

Man findet das Log in der Ereignisanzeige (Systemsteuerung -> Verwaltung -> Ereignisanzeige) im Anwendungsprotokoll, wenn man nach Ereignis-ID 1001 und Quelle Wininit filtert.

Uns interessieren die Roten Zeilen. Hier wurde offensichtlich ein Ordner „Unknown Album“ gelöscht. Super, wenn man mehrere solcher Ordner hatte. Welcher fehlt denn jetzt? Suchen kann man danach ja nicht mehr. Ist ja jetzt weg. Folgender Befehl hilft jetzt weiter (mit den beiden kleinen Programmen von oben):

nfi d: | gawk "/File 37720\r/{c=4;{print}next}c-->0"

Die Nummer des Verzeichnisses aus dem der Ordner gelöscht wurde ist 37720. Im Log sieht man auch die Angabe 0x9358. Das ist das gleiche in Hexadezimalschreibweise.

Als Ausgabe kommt dann nach einiger Zeit (intern wird jede Datei so angezeigt aber gawk filtert die Ausgabe) sowas:

File 37720
\Dokumente\Eigene Musik\iTunes\iTunes Music\Marcus
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$OBJECT_ID (resident)

Jetzt wissen wir, welchen Ordner wir verloren haben und können ihn aus unserem letzten Backup wiederherstellen.

Die Idee zu diesem Blogeintrag kommt von: http://superuser.com

Tags » , , , «

Autor:
Datum: Mittwoch, 12. Februar 2014 15:32
Trackback: Trackback-URL Themengebiet: IT, Windows

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

Ein Kommentar

  1. Robert Hönlinger
    Montag, 12. August 2019 11:06
    1

    Vielen Dank für diesen Tipp! Ich habe ihn gut gebrauchen können. Allerdings verwende ich inzwischen statt gawk sed. Damit geht es noch kürzer:
    nfi d: | sed ‚/File 37720\r/,+4p‘

Kommentar abgeben

*