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


13

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

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

Так где же хранятся все метаданные?


здесь нет магии. Прочитайте эти ответы здесь: stackoverflow.com/questions/4954991/…
HighTechGeek

Давным-давно я помню, что раньше у меня был какой-то вирус, который каким-то образом повредил пару файлов на моем компьютере, так что их размер составил около 100 ГБ. Каждый из них. На моем жестком диске 40 ГБ. Так что, должно быть, было какое-то волшебство ... :-D
Jeyekomon

Ответы:


11

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

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

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

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

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

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

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

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


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

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

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

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


Иначе вы бы увидели имена файлов внутри ваших текстовых файлов? Ну, многие богатые типы файлов, такие как изображения или файлы PDF, могут содержать много метаданных. Даже простые текстовые файлы в кодировке UTF-8 содержат последовательность EFBBBF, которая скрыта большинством текстовых редакторов, поэтому я ожидал, что метаданные файла будут просто еще одной скрытой и недоступной частью файла. В любом случае, вы были бы отличным учителем! Каждый приведенный здесь ответ был (и будет) действительно полезным, но я ценю ваши усилия больше всего.
Jeyekomon

Это не отвечает на вопрос, не так ли? Так где же хранятся все метаданные?
Корай Тугай

@KorayTugay Я полагаю, что реальный вопрос был «Как метаданные файла хранятся в Windows, чтобы они не занимали место ». На мой взгляд, лучший ответ, который вы можете дать в посте суперпользователя, - объяснить, что они хранятся в файловой системе, а не непосредственно в файле, и поэтому не учитывают размер файла. Они есть в книге, а не как часть текста.
Гроностай

7

Только что узнал сегодня о 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

Вот легко читаемая статья, которая углубляется в детали.


Это действительно интересная вещь! Я на самом деле никогда не слышал об этом тоже ... Спасибо.
Jeyekomon

@Jeyekomon, кажется, «type» не поддерживает его, pastebin.com/raw/4Ae3GGkN, но я вижу, что эхо и блокнот работают (проверено в win7)
barlop

2

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

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

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

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


2

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

Для большего чтения:

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

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


Спасибо. Таким образом, ответ заключается в более глубоком понимании файловой системы моего жесткого диска ... И просто из любопытства - знаете ли вы какой-нибудь "ненормальный" метод Windows? Тот, который на самом деле полезен для доступа к этим метафайлам? Пару ключевых слов для Google будет достаточно ...
Jeyekomon

1
@Jeyekomon Вам нужно использовать редактор секторов. Вот пример: blogs.technet.com/b/askcore/archive/2013/03/01/…
Дэвид Маршалл,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.