Механизм образования временных меток в Windows

Приветствую уважаемых читателей. Сегодня я хочу затронуть очень интересную и важную тему (по крайней мере для меня) – образование временных меток в файловых системах Windows.

Проблематика

Если по ходу своей деятельности вы обращаете внимания на такие атрибуты как даты создания, изменения, последнего доступа, то эта статья может быть вам полезна. После опроса нескольких людей я увидел, что на самом деле каверзные вопросы о временных метках многих ставят в тупик. В самом деле, казалось бы, нет ничего проще – дата создания – когда файл создан. Дата изменения – когда изменён. Дата последнего доступа – когда к файлу осуществлялся доступ. Просто? Если вам кажется это просто, то предлагаю ответить на ряд вопросов для самоконтроля. Если вопросы для вас оказались просты и не вызвали некого замешательства, то смело можете читать другие статьи – здесь для вас ничего полезного нет. Но если вопросы заставили вас задуматься, то милости прошу…

Вопросы для самоконтроля

  1. На компьютере (на разделе файловая система NTFS) в каталоге “Рабочий стол” находится файл “file1.txt”, дата создания которого 01.10.2018, дата изменения 27.07.2017. Может ли такое быть и почему?
  2. На компьютере в каталоге “Рабочий стол” находится тот же файл. Дата создания 01.10.2018, дата изменения 27.07.2017. Если мы скопируем этот файл в каталог “Мои документы”, какие даты создания и изменения будут у полученного файла?
  3. Всё то же, но не копируем, а переместим? Есть ли разница и почему?
  4. Сколько всего временных меток есть у файла в файловой системе NTFS?
  5. Тот же файл на рабочем столе. Если мы переименуем файл, какие из его временных меток изменятся и почему?

Ответы на вопросы

Я кратко отвечу на вопросы, а потом дам немного сухой теории и влажной практики.

Дата создания позже даты изменения

Примерно так, как видно на скрине.

Да, такая ситуация вполне возможна. Дело в том, что атрибут “Создан” показывает дату создания файла в конкретной файловой системе. А атрибут “Изменён” – хранится внутри файла. Если файл скопирован с другого носителя (флешки, жёсткого диска), то будет считаться, что в этой файловой системе он будет создан как новый файл. И дата создания будет установлена из текущих настроек системного времени.

Скопированный файл

Я создал каталог “dir” и скопировал в него наш исходный файл “file1”. Вот что увидим. Расположение – внутри папки. Изменились атрибуты “Создан” и “Открыт”.

Фактически, при копировании файла мы создали новый объект файловой системы. И, разумеется, от этого у него установились соответствующие атрибуты – создания = открытия = текущее время операционной системы.

Перемещённый файл

Создал на разделе ещё один каталог “dir2” и вырезал и вставил файл из корня в него. Вот что видим:Файл абсолютно идентичен по временным меткам с исходным. Действительно, по сути перемещением мы не создали ничего нового. Просто поместили файл в новое местоположение. Так есть ли разница?

Конечно есть. Если воспользоваться специальным инструментом, вроде DiskExplorer от Runtime, то можно увидеть, что при копировании файла с номером MFT #N появляется файл с номером MFT #N+1, а при перемещении – тот же MFT #N. То есть фактически имеется тот же самый файл.

Теперь посмотрим на разницу временных меток:

Ситуация:

  • MFT #2C
  • Время создания: 22:39:35
  • Скопировал в 22:41:39
  • Переместил в 22:41:45

При копировании файла:

При копировании у нас изменился номер MFT, новый номер таблицы файлов 2F – так как новый файловый объект. Переходим к атрибутам. Атрибуты $10 – STANDARD_INFORMATION. – видим, что все даты, кроме даты изменения, установлены по дате копирования (то есть создания файла).

Переходим к атрибутам $30 – FILE_NAME. Видим, что все 4 временных атрибута установлены по дате копирования.

При перемещении файла:

При перемещении – номер MFT у нас не изменился! И вообще временные метки остались прежними, за исключением одной – время последнего изменения MFT! Это вот очень важная деталь. На самом деле именно по этому признаку можно понять, что файл перемещался в пределах одной файловой системы.

Атрибуты FILE_NAME без изменений.

Сколько всего временных меток у файла в NTFS

На самом деле ответ – от 8 до 12. Всё зависит от длины имени файла. При коротком (до 8.3) – будет 4 метки у $10 – STANDARD_INFORMATION и 4 метки у $10 – FILE_NAME.

Если имя файла будет длиннее, то добавится ещё один атрибут $30 – FILE_NAME с длинным именем файла. И у него также будут 4 метки времени. Вот такая загогулина :)

Переименование файла

  • Файл создан в 23:14:01
  • Переименован в 23:15:55

Попарное сравнение атрибутов по два изображения “было” “стало”


$10 – STANDARD_INFORMATION

  • Дата создания: не изменилась
  • Дата изменения: не изменилась
  • Дата модификации MFT: изменилась
  • Дата последнего доступа: не изменилась


$30 – FILE_NAME (short)

  • Дата создания: не изменилась
  • Дата изменения: не изменилась
  • Дата модификации MFT: не изменилась
  • Дата последнего доступа: не изменилась


$30 – FILE_NAME (long)

  • Дата создания: не изменилась
  • Дата изменения: не изменилась
  • Дата модификации MFT: не изменилась
  • Дата последнего доступа: не изменилась

Надеюсь, информация была полезна. В следующих статьях мы рассмотрим и другие вопросы. Для затравочки, вопросы для самоконтроля:

  1. Почему при просмотре различными программами отображается различное время создания файлов у одних и тех же файлов?
  2. Как узнать, какое смещение часовых поясов было установлено в системе не включая компьютер?
  3. Какие следы остаются при ручном изменении системного времени?

Если знаете ответы на эти вопросы, то примите мои поздравления. Если интересно узнать – ждите следующий выпуск! Не забываем ставить Like, рекомендовать статью и комментировать! Так я узнаю, что вам действительно интересно читать! Спасибо за потраченное время.


Like this post? Please share to your friends:

Comments:

Leave a Reply