Уникальные идентификаторы файлов в NTFS и $Object_ID

Судя по статьям, которые я нашел в Интернете, существуют две формы уникальных идентификаторов файлов в NTFS:

$OBJECT_ID — это атрибут, который содержит идентификатор. Этот идентификатор используется службой отслеживания распределенных ссылок. Пример того, как он используется, можно найти в ярлыках. Создайте на рабочем столе ярлык, указывающий на файл. Затем переместите этот файл. Ярлык по-прежнему будет работать, потому что он использует другой способ привязки к исходному файлу, а не только путь и имя файла.

Не все файлы будут иметь атрибут $OBJECT_ID. На самом деле атрибут добавляется в файл только после того, как будет назначен фактический идентификатор.

Я пытаюсь понять, когда установлен идентификатор объекта. Вот несколько вопросов:

  1. Когда присваивается идентификатор объекта? Судя по приведенной выше статье, в одном сценарии это происходит при создании ярлыка для файла.

  2. Присваивается ли идентификатор объекта автоматически, когда файл ссылается на другой файл, например. документ Word, в который встроена диаграмма Visio?

  3. Идентификаторы объектов назначаются только тогда, когда включено/работает отслеживание распределенных ссылок, или они существуют независимо от отслеживания распределенных ссылок?

  4. Если бы я хотел отследить уникальный идентификатор файла, было бы для меня преимуществом использовать идентификатор объекта (64 байта) по сравнению с комбинированным серийным номером тома и индексом файла (младшим/высшим), которые вместе составляют 12 байтов.

Спасибо, Элан


person Elan    schedule 08.10.2010    source источник


Ответы (2)


Все зависит от того, что вы пытаетесь сделать. :)

Индексный номер файла, как указано в документации, на самом деле это всего лишь хороший идентификатор файла в NTFS (в отличие от FAT), но даже в этом случае он может измениться, если файл будет удален и воссоздан (подумайте о резервном копировании/восстановлении), хотя на самом деле вы могли бы считать это бонусом, если искали различать тех.

Вероятно, лучше не беспокоиться о службе отслеживания ссылок в отношении идентификаторов объектов и вместо этого думать о них как о чем-то, что вы можете create/set/read, но опять же только в NTFS.

Идентификаторы объектов имеют некоторые накладные расходы, а идентификаторы файлов — нет. Для большинства приложений я, вероятно, в конечном итоге выберу ссылочные номера файлов (даже если они потенциально хрупкие).

person jrtipton    schedule 11.10.2010
comment
Что вы подразумеваете под справочными номерами файлов? Вы имеете в виду файловый индекс в NTFS? - person Elan; 12.10.2010
comment
Ссылочные номера файлов — это идентификаторы, присвоенные файлам. Комбинация двух полей, которые вы упомянули, низкие/высокие значения индекса файла, является справочным номером файла. Индекс относится к набору файлов. - person jrtipton; 14.10.2010

Решил разместить это здесь для таких же, как я, исследующих FRN и OBJECTID. Эти идентификаторы могут быть стабильными для каталогов (кроме восстановления файлов) в одной файловой системе, но как FRN, так и ObjectID изменятся, как только вы сохраните и закроете файл с помощью множества различных приложений.

Например, если вы открываете файл Word с FRN#: 1000 и вам назначен OBJECTID: 8675309, при внесении изменений сохраните и закройте его. FRN# будет новым номером, и ObjectID не будет.

Далее я сделал простое открытие, изменение текста в абзаце, сохранение и закрытие файла Word. В моей программе более 52 событий, я отфильтровал все задействованные файлы ~WRL*tmp и т. д. Но даже в одной и той же файловой системе с одними и теми же файлами FRN не является постоянной вещью. В данный момент у меня не отображается ObjectID, но поверьте мне, когда вы назначите его, откроете этот файл и сохраните его, это, по сути, новый файл.

Пример выходных данных журнала USN, где первое число — это справочный номер файла, второе — это номер ссылки на родительский файл (постоянный FRN для каталога).

viewchanges
562949953421470    | 2251799813685402   | FILE  | 7/10/2014 8:12:13 PM      | \MyDemo\WordFileDemo.docx
                                                  OBJECT ID CHANGE
----------------------------------------------------------------------------------------------------
562949953421470    | 2251799813685402   | FILE  | 7/10/2014 8:12:13 PM      | \MyDemo\WordFileDemo.docx
                                                  OBJECT ID CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
562949953421470    | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  RENAME OLD NAME
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  RENAME NEW NAME
                                                  BASIC INFO CHANGE
                                                  OBJECT ID CHANGE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  RENAME NEW NAME
                                                  BASIC INFO CHANGE
                                                  OBJECT ID CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  OBJECT ID CHANGE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  OBJECT ID CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
1125899906842780   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  RENAME OLD NAME
----------------------------------------------------------------------------------------------------
1125899906842781   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  RENAME NEW NAME
                                                  BASIC INFO CHANGE
                                                  OBJECT ID CHANGE
----------------------------------------------------------------------------------------------------
1125899906842781   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  RENAME NEW NAME
                                                  BASIC INFO CHANGE
                                                  OBJECT ID CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
1125899906842781   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
----------------------------------------------------------------------------------------------------
1125899906842781   | 2251799813685402   | FILE  | 7/10/2014 8:12:19 PM      | \MyDemo\WordFileDemo.docx
                                                  SECURITY CHANGE
                                                  CLOSE
----------------------------------------------------------------------------------------------------
person Michael McCollough    schedule 11.07.2014
comment
идентификатор изменяется только потому, что приложение решило сохранить содержимое в виде нового файла, удалить старый и переименовать новый файл в старый. Это будет верно для любой ОС и файловых систем. Идентификатор можно сохранить только в том случае, если вы пишете в тот же файл. - person phuclv; 22.07.2018