Forum: PC Hard- und Software Datei identifizieren - NTFS File Reference Number


von Paul (Gast)


Lesenswert?

Hi,

kennt sich hier jemand bestens mit dem NTFS-Dateisystem aus? Ich würde 
gerne wissen, ob die FRN(also diese ID mit 48+16 Bit) eines MFT-Eintrags 
für die eindeutige Identifizierung einer einzelnen Datei/eines Ordners 
auf einer bestimmten NTFS-Partition taugt, oder ob sich diese ID unter 
gewissen Umständen ändern kann?
Eigentlich suche ich nach einer einfachen und zuverlässigen Möglichkeit, 
umbenannte und/oder verschobene Dateien/Ordner zuverlässig zu erkennen.

Vielen Dank,
Paul

von Jasch (Gast)


Lesenswert?

Paul schrieb:
> Hi,
>
> kennt sich hier jemand bestens mit dem NTFS-Dateisystem aus? Ich würde
> gerne wissen, ob die FRN(also diese ID mit 48+16 Bit) eines MFT-Eintrags
> für die eindeutige Identifizierung einer einzelnen Datei/eines Ordners
> auf einer bestimmten NTFS-Partition taugt, oder ob sich diese ID unter
> gewissen Umständen ändern kann?

Also ich denke mal ein File/Verzeichnis kann mehrere davon haben, 
schliesslich hat NTFS/Windows ja seit einer Weile Hardlinks. Hat MS 
natürlich gut versteckt, könnte ja die User verwirren.

Was ist denn dann das "File", die eigentlichen Daten in ihren FS-Blöcken 
oder einer, zwei oder welcher der drei Einträge in der MFT?

von Paul (Gast)


Lesenswert?

Hallo Jasch,

>Was ist denn dann das "File", die eigentlichen Daten in ihren FS-Blöcken
>oder einer, zwei oder welcher der drei Einträge in der MFT?

also um die Nutz-Datenblöcke geht es mir nicht, die können sich bei 
Dateien ja ändern - es bleibt aber dennoch die selbe Datei. Damit 
scheidet ein Hash über den Inhalt oder ähnliches schonmal aus. Mir geht 
es darum, dass ich zu einem beliebigen Zeitpunkt x eine Datei analysiere 
und ab diesem Zeitpunkt die Datei zukünftig im Dateisystem ohne 
permanente Event-Überwachung verfolgen kann, ganz egal ob der Name 
danach geändert wird, oder ob sie verschoben wird oder sich ihr Inhalt 
ändert.

Ehrlich gesagt verstehe ich Deine Frage nicht so ganz, ein Hardlink 
verweist doch letzlich auch nur auf eine bestimmte Datei/ein bestimmtes 
Directory, und dürfte daher in letzter Instanz immer auf einen 
eindeutigen MFT-Eintrag hinauslaufen, oder nicht? Das ließe sich dann 
doch auflösen, sofern Hardlinks als solche gekennzeichnet sind...

Unter Linux gibt es ja glaube ich die iNode-Number. Vermutlich suche ich 
dessen Äquivalent unter Windows - ich bin mir nur nicht sicher, ob z.B. 
bei einer MFT-Defragmentierung die FileID(FRN) geändert wird, oder unter 
welchen Umständen dies möglicherweise noch passiert.

Gruß,
Paul

von Jasch (Gast)


Lesenswert?

Paul schrieb:
> Hallo Jasch,
>
>>Was ist denn dann das "File", die eigentlichen Daten in ihren FS-Blöcken
>>oder einer, zwei oder welcher der drei Einträge in der MFT?
>
> also um die Nutz-Datenblöcke geht es mir nicht, die können sich bei
> Dateien ja ändern - es bleibt aber dennoch die selbe Datei.

Nur wenn Du das so definierst, das ist nicht selbstverständlich.

VMS hat z.B. eine Versionsnummer als Bestandteil des Filenamens, jedes 
Ändern der Daten erzeugt dann im Prinzip eine neue Datei, die vorherige 
Version war wiederherstellbar. Ohh, warte mal, das kann Windows ja 
inzwischen auch. Keine Ahnung was das mit den MFT-Einträgen macht.

Dieser Dave Cutler und einige andere der originalen WinNT-Entwickler 
kamen aus Richtung DEC/VMS zu MS... ;-)

> Damit
> scheidet ein Hash über den Inhalt oder ähnliches schonmal aus. Mir geht
> es darum, dass ich zu einem beliebigen Zeitpunkt x eine Datei analysiere
> und ab diesem Zeitpunkt die Datei zukünftig im Dateisystem ohne
> permanente Event-Überwachung verfolgen kann, ganz egal ob der Name
> danach geändert wird, oder ob sie verschoben wird oder sich ihr Inhalt
> ändert.

Hehehe, ab wann nennst Du es denn dann eine "andere" Datei, viel mehr 
gibt es ja nicht? Ist es dieselbe Datei wenn ich die kopiere und das 
Original dann lösche (was übrigens ein Verschieben zwischen Volumes 
tut)? Wenn ja, wieso, wenn nein, wieso nicht?

> Ehrlich gesagt verstehe ich Deine Frage nicht so ganz, ein Hardlink
> verweist doch letzlich auch nur auf eine bestimmte Datei/ein bestimmtes
> Directory, und dürfte daher in letzter Instanz immer auf einen
> eindeutigen MFT-Eintrag hinauslaufen, oder nicht? Das ließe sich dann
> doch auflösen, sofern Hardlinks als solche gekennzeichnet sind...

Hardlinks sind meines Wissens eben nicht als solche gekennzeichnet, alle 
Namen eines Files sind gleichberechtigt.

> Unter Linux gibt es ja glaube ich die iNode-Number. Vermutlich suche ich
> dessen Äquivalent unter Windows - ich bin mir nur nicht sicher, ob z.B.
> bei einer MFT-Defragmentierung die FileID(FRN) geändert wird, oder unter
> welchen Umständen dies möglicherweise noch passiert.

Da würde ich mal ein bisschen in MSDN rumwühlen, da gibt es auch Artikel 
zu NTFS-Interna.

Aber ich habe den Verdacht was Du willst geht nicht ohne weiteres zu 
realisieren - es ist einfach zu ungewöhnlich und auch, wie es so schön 
heisst - ill-defined.

von Jasch (Gast)


Lesenswert?

Jasch schrieb:
> Paul schrieb:
[big-snip]
> Da würde ich mal ein bisschen in MSDN rumwühlen, da gibt es auch Artikel
> zu NTFS-Interna.

Also der Tipp war schonmal nicht schlecht wenn ich das so sagen darf.

> Aber ich habe den Verdacht was Du willst geht nicht ohne weiteres zu
> realisieren - es ist einfach zu ungewöhnlich und auch, wie es so schön
> heisst - ill-defined.

An manchen Tagen glaube ich wir sind doch alle in der Matrix und der 
Admin erlaubt sich manchmal einen Scherz.

Da hat ausgerechnet jetzt ein Microsoftie auf seinem Blog "The Old New 
Thing" etwas gepostet was Pauls Problem lösen könnte (Zufall? Wer's 
glaubt! ;-), siehe 
<http://blogs.msdn.com/b/oldnewthing/archive/2011/08/16/10195932.aspx>;, 
speziell die verlinkten Sachen.

Also man kann bei neueren NTFS- und Windows-Versionen (wohl ab Vista, 
Server 2008) einem File eine eindeutige ID verpassen, die ändert sich 
auch nicht durch Umbenennen oder Verschieben solange das auf demselben 
Laufwerk passiert.

Und der Höhepunkt ist man kann das File statt mit seinem Namen auch mit 
dieser ID öffnen - siehe Funktion OpenFileById().

Abgefahrenes Zeug!

von ... (Gast)


Lesenswert?

Eine weitere Alternative wäre eventuell der Datei per ADS eine GUID zu 
verpassen. Das würde sogar Kopieraktionen und Verschieben über mehrere 
Laufwerke überleben.
http://support.microsoft.com/kb/105763

PS: Dein Link ist etwas kaputt :)
Der hier sollte funktionieren:
http://blogs.msdn.com/b/oldnewthing/archive/2011/08/16/10195932.aspx

von Rolf Magnus (Gast)


Lesenswert?

Du willst sie als dieselbe Datei erkenenn, auch wenn sie ihren Namen, 
Ort und Inhalt ändert? Was ist dann das Kriterium, aufgrund dessen es 
für dich immer noch dieselbe Datei ist?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.