Как хранятся метаданные файлов в Windows?

(Я использую Windows XP, но, я думаю, он похож во всех последних версиях Windows.)

Когда вы создаете, например, новый пустой текстовый документ, вы найдете в его свойствах, что он имеет размер 0 байт. Zero bytes означает отсутствие информации . Нет данных.
Но все же файл имеет какое-то имя, он все равно может иметь даты последнего доступа, модификации и создания. Он несет информацию о том, является ли это скрытым файлом или нет, является ли он доступным только для чтения или нет …

Итак, где хранятся все метаданные?

    Вас учили, что на жестких дисках есть файлы, но это не вся правда. На самом деле жесткие диски содержат очень большое число, выраженное множеством отдельных бит. Но эта интерпретация не имеет никакого смысла для вас и вашего компьютера, потому что обработка одиночных больших чисел не очень распространена (и я говорю о ДЕЙСТВИТЕЛЬНО ОГРОМНЫХ номерах). Вместо этого компьютер разбивает его на более мелкие слова (8-битные, 16-битные, 32-битные или любые другие) и использует это. Тем не менее, это всего лишь куча слов (допустим, 8-битные слова, т.е. байты).

    Теперь этот диск разделен. Я объяснил, почему разделение является хорошей идеей в этом ответе :

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

    • У вас могут быть две ОС, сидящие на одном жестком диске и не мешающие друг другу. Каждый из них будет обрабатывать свой раздел как логический диск и не будет связываться с другими, если вы не скажете об этом.
    • Вы можете логически отделять свои данные. Если по какой-то причине один раздел поврежден, другие разделы, скорее всего, останутся нетронутыми.
    • Использование разделов лучше, чем использование нескольких небольших жестких дисков, потому что ваша система тише, потребляет меньше энергии, и вы можете изменять размер, удалять, перемещать их вокруг и т. Д.
    • Вы можете использовать некоторые части жесткого диска для определенных целей.

    Теперь каждый раздел имеет свою собственную файловую систему. В современных версиях Windows используется NTFS , но FAT , FAT32 и exFAT поддерживаются для внешних носителей или устаревших разделов. В повседневных Linux-установках обычно используются ext filesystems, а ext4 – самый последний.

    Файловая система определяет способ физического расположения файлов на диске. Вы можете думать об этом так: если бы у вас была книга на 10000 страниц без каких-либо глав, номеров страниц или разрывов строк, было бы очень сложно использовать. Конечно, номера страниц и заголовки разделов занимают некоторое место на странице, но они делают использование книги намного проще и быстрее. Если вы хотите перейти к главе, скажем, 42, вы просто посмотрите ее в оглавлении. Затем вы листаете книгу, пока не найдете нужную вам главу. Ваши файлы – это главы, а ваша файловая система – это книга. Метаданные файловой системы, такие как границы файлов, имена файлов и т. Д. Также занимают место, но это сравнительно небольшое количество пространства, и это заставляет вещи работать намного быстрее.

    Если ваша «глава» пуста, у нее все еще может быть заголовок или номер страницы, правильно? Пустой файл содержит нулевые байты данных. Метаданные занимают место, но это не часть файла, а файловой системы. В противном случае вы увидите имена файлов внутри ваших текстовых файлов?

    Кстати, поэтому ранние версии DOS принимали только 8,3 имен – пространство, зарезервированное для имен файлов, было очень ограниченным. NTFS позволяет имена файлов длиной 255 символов [1] .


    Еще одно слово в вашем комментарии:

    Раньше у меня был какой-то вирус, который каким-то образом исказил пару файлов на моем ПК, чтобы они выглядели примерно на 100 ГБ. Каждый из них. На моем жестком диске объемом 40 ГБ. Так что, должно быть, какая-то магия … 😀

    Вполне возможно, что действительные файлы больше, чем ваш жесткий диск, благодаря функции, называемой разреженными файлами . Хеннс прекрасно объясняет это в своем комментарии по этому вопросу :

    Представьте себе связующее устройство, способное удерживать 100 страниц. Если вы используете это связующее как обычный файл, вы можете вставить 100 страниц. Вы могли бы прочитать все 100. Вы могли бы написать все 100. Теперь представьте редкое связующее. Вы вставляете первую страницу, которую вы пишете «Страница 1: Содержание А». Затем вы вставляете вторую страницу, которую вы пишете «Страница 9999: контент b:». Всякий раз, когда вы пытаетесь прочитать страницу, вы смотрите, если она существует. Если это не так, ваш ответ будет пустой страницей. Если он существует, вы возвращаете содержимое страницы. Всякий раз, когда вы пишете на страницу, которая еще не существует в связующем, вы добавляете новый лист бумаги.

    Просто узнал сегодня о Windows Alternate Data Streams (ADS). Это скрытая вилка ресурсов, прикрепленная к файлу. Он был частью NTFS с Windows NT 3.1.

    Например, если у вас есть пустой текстовый файл, но заполните часть сводной информации в теге свойств файла, создается скрытый файл ADS и прикрепляется к текстовому файлу. Большинство версий Windows не включают размер файла ADS, когда сообщается размер исходного файла.

    Вы можете создавать и просматривать файлы ADS из командной строки.

    echo "ABCDE" > test.txt:hidden.txt

    Создаст файл test.txt с файлом ADS с именем hidden.txt

    Вы можете использовать эту команду для редактирования файла:

    notepad test.txt:hidden.txt

    Вот легкая для чтения статья, которая идет более подробно.

    Я сделал поиск и наткнулся на аналогичный вопрос, заданный в Stack Overflow.

    В основном говорится, что файл создан и занимает несколько байтов или кластер жестких дисков и т. Д. Это зависит от степени детализации жесткого диска и файловой системы и т. Д.

    Они обсуждают это здесь: https://stackoverflow.com/questions/4954991/are-0-bytes-files-really-0-bytes

    С дополнительными ссылками для дальнейших исследований.

    В томе NTFS эта информация хранится в метафайлах. В частности, имя файла и временные метки хранятся в метафайле с именем $ MFT. Метафайлы недоступны обычными методами Windows, такими как Проводник или командная строка.

    Для получения дополнительной информации:

    http://ntfs.com/ntfs-system-files.htm

    http://en.wikipedia.org/wiki/NTFS

    Давайте будем гением компьютера.