Многие пользователи Windows сталкивались с ситуацией, когда созданный файл в свойствах внезапно отображает дату создания, относящуюся к прошлому дню или неделе. Хотя это поведение может показаться программной ошибкой, на деле речь идет о системной функции под названием File System Tunnelling. Это особенность работы файловых систем NTFS и FAT, которая позволяет новым объектам наследовать определенные метаданные удаленных или переименованных файлов, если те имели идентичные имена.

Как работает механизм файлового туннелирования
Согласно документации FileSystemInfo.CreationTime от Microsoft, диски в формате NTFS способны кэшировать метаинформацию о файлах на непродолжительное время. Впервые подробно об этом процессе рассказал инженер компании Рэймонд Чен еще в 2005 году. Он сравнил этот процесс с квантовым туннелированием, где частица преодолевает энергетический барьер, который в классической физике должен быть для нее непреодолим. В случае с файловой системой данные кажутся уничтоженными при удалении, но магическим образом воссоздаются на «другой стороне» временного барьера.
Алгоритм работы системы выглядит следующим образом:
- При удалении или переименовании файла Windows создает запись в специальном кэше туннелей.
- Если в той же директории в течение короткого промежутка времени создается новый файл с тем же именем, система применяет к нему кэшированные метаданные, включая дату создания и связь между длинными и короткими именами файлов (SFN/LFN).
- Кэш привязан к конкретному тому и автоматически очищается по мере заполнения.
Важно подчеркнуть, что содержимое удаленного файла при этом не восстанавливается — сохраняются только метаданные. Окно действия функции ограничено 15 секундами, поэтому новый файл не унаследует дату, если предыдущий был удален месяц назад.
Почему Microsoft внедрила эту технологию
Изначально файловое туннелирование было создано не для того, чтобы сбивать с толку пользователей, а для обеспечения корректной работы приложений. Многие программы используют так называемый метод «безопасного сохранения» (Safe save). Вместо того чтобы редактировать существующий документ, приложение создает временный файл с новыми данными, удаляет оригинал, а затем переименовывает временный файл в оригинальное имя.
Если бы система не поддерживала туннелирование, каждый такой процесс сохранения воспринимался бы Windows как создание совершенно нового документа, что приводило бы к потере исходной даты создания. Кроме того, технология критически важна для совместимости со старыми 16-битными приложениями, которые понимают только короткие имена файлов в формате 8.3. Туннелирование гарантирует, что связь между коротким и длинным именем сохранится при перезаписи.
Операции, активирующие кэш туннелей
Документация FltGetTunneledName описывает механизм как кэш, срабатывающий при определенных парах операций. К ним относятся:
- Удаление / создание файла с одним и тем же именем.
- Удаление / переименование другого файла в имя удаленного.
- Переименование / создание файла с освободившимся именем.
- Переименование / переименование другого файла в освободившееся имя.
Для продвинутых пользователей в базе знаний Microsoft доступна информация о том, как через реестр Windows изменить или полностью отключить 15-секундный интервал кэширования. Таким образом, если новый файл отображает старую дату создания, это не признак сбоя, а следование заложенным архитектурным принципам операционной системы.
История названия и технические подробности
Забавный факт, связанный с разработкой этой функции: программист из команды Windows 95, который занимался реализацией этого механизма, настолько увлекся аналогией с квантовой физикой, что даже назвал внутренние структуры данных в коде системы «кварками». Это подчеркивает, насколько необычной для того времени была идея «сохранения» информации об объекте, который уже был формально удален из файловой таблицы.

Важно уточнить границы работы системы. Кэш туннелирования не является глобальным для всей ОС, он принадлежит конкретной директории и носит временный характер. Функция активируется только при строгом соблюдении определенных условий: операции должны произойти в рамках установленного временного окна, иначе система распознает файл как полностью новый. Также стоит развеять опасения по поводу приватности: несмотря на то, что Windows может «помнить» удаленный файл в течение 15 секунд, это никак не помогает в восстановлении данных. Содержимое стертого файла по-прежнему считается утерянным, и кэшируются исключительно метаданные.
Для тех, кто беспокоится о безопасности данных или возможности восстановления удаленной информации после сброса системы, в современных версиях Windows предусмотрена опция Data Sanitization в рамках функции Cloud Rebuild. Она предназначена для глубокой очистки, которая не имеет ничего общего с кратковременным кэшированием метаданных.
Зачем это нужно: взгляд изнутри
Рэймонд Чен, подробно анализировавший внутреннее устройство Windows, отмечал, что многие классические программы не поддерживают редактирование файлов «на месте» (in-place modification). Когда вы нажимаете «Сохранить» в текстовом редакторе или другой прикладной программе, на низком уровне происходит последовательность: создание временного файла, удаление оригинала и переименование нового файла. Без механизма туннелирования пользователь при каждом сохранении документа видел бы обновление даты создания на текущий момент, что противоречило бы логике владения файлом.
Аналогичная проблема возникала и с устаревшим программным обеспечением. В 16-битных приложениях, работавших под управлением DOS или ранних версий Windows, были доступны только короткие имена файлов (SFN — Short File Name), ограниченные форматом 8.3. Если программа заменяла файл с длинным именем (LFN) без сохранения связи с его коротким аналогом, «дружественное» название файла могло навсегда исчезнуть, превратившись в нечитаемую абракадабру формата DOS. Туннелирование выступает своего рода «клеем», поддерживающим эту связь и обеспечивающим преемственность метаданных при выполнении критически важных для системной совместимости операций.
Список операций, вызывающих срабатывание туннелирования
Согласно документации FltGetTunneledName, механизм кэширования срабатывает при выполнении следующих пар операций в рамках одного тома:
- delete(name) / create(name)
- delete(name) / rename(source, name)
- rename(name, newname) / create(name)
- rename(name, newname) / rename(source, name)
Если вы столкнулись с необходимостью изменить или отключить этот механизм, в старых статьях базы знаний Microsoft (изначально написанных для эпохи Windows NT и XP) описывается возможность модификации параметров реестра. Это позволяет администраторам вручную настраивать или полностью деактивировать стандартный 15-секундный интервал, если специфика работы ПО требует иного поведения файловой системы.






