Чи метадані не займають будь-якого розміру?


51

Я поміщаю 4096 символів у текстовий файл і зберігаю його. Оскільки кожен символ - 1 байт, розмір текстового файлу повинен бути 4 К байт. Як ви бачите нижче, це нормально:

введіть тут опис зображення

Я підключаю флеш-пам’ять до комп'ютера. вільний простір на флеш-пам'яті становить 1,717,518,336байти :

введіть тут опис зображення

Я створив копію файлу у своїй флеш-пам’яті. І знову погляньте на вільний простір. у нього немає вільного місця в 1,717,514,240байтах :

введіть тут опис зображення

Давайте подивимось, в чому різниця:

1,717,518,336 - 1,717,514,240 =4096 байти


Моє запитання:

Q1:

Як ви бачите на останньому зображенні вище, єдиний простір, який файл займає у спалаху, - це простір для його вмісту [символи]. Отже, де файл метаданих?

Я маю на увазі, коли я переміщую файл на інший комп'ютер, як він розуміє ім'я файлу, Власник файлу, Дата створення та змінення та ...?

Хіба він не займає якогось розміру? !!

Q2:

Чи можу я побачити файл метаданих у флеш-пам'яті?

введіть тут опис зображення

Цінуйте свій час і увагу.


10
метадані міститимуться у самій файловій системі. це не частина розміру файлу, про який повідомляє Windows. Крім того, метадані FAT32 та NTFS були б різними.
Рамхаунд

@Ramhound, коли я переміщую текстовий файл у флеш-пам’ять, його файл метаданих також переміщується у флеш-пам’ять, правда? як я це бачу?
TheGoodUser


1
Окрім розуміння внутрішніх даних ОС (варто саме по собі), мабуть, немає причин ніколи переглядати та змінювати таку інформацію, якщо ви не пишете програму відновлення / відновлення диска. Для звичайного використання ви ніколи не хочете змінювати інформацію на цьому рівні, оскільки це може легко підірвати цілісність самої файлової системи та всього, що її використовує.
Джо

3
Коротка відповідь: Він займає місце, але він не враховується як частина розміру файлу.
користувач253751

Відповіді:


50

Так, метадані займають простір. На NTFS він займає 1024 байти, щоб бути конкретним. Однак інформація зберігається не у файлі, а у головній таблиці файлів MFT. Зокрема у записі MFT №4 $AttrDef.

Докладніше див. У цій статті Technet : у таблиці 3.5 містяться всі визначені записи MFT.

Коли формат тома форматується за допомогою NTFS, створюється файл таблиці головних файлів (MFT) та інші фрагменти метаданих. Метадані - це файли, які NTFS використовує для реалізації структури файлової системи. NTFS зберігає перші 16 записів MFT для файлів метаданих.

NTFS створює запис файлів для кожного файлу та запис каталогу для кожного каталогу, створеного на томі NTFS. MFT включає окремий запис файлів для самого MFT. Ці записи файлів і каталогів зберігаються на MFT. Атрибути файлу записуються у виділений простір у MFT. Крім атрибутів файлів, кожен запис файлу містить інформацію про положення файлового запису в MFT.

Зауважте, що інші файлові системи можуть по-різному поводитися з метаданими.

EDIT: У розділі коментарів було зазначено, що ця відповідь не містить сенсу, оскільки ОП вимагає метаданих у файлових системах FAT32, а не NTFS. Якби я знав як, я видалив би атрибут "правильна відповідь". Тому я надаю додаткову інформацію, яка відповідає на питання стосовно FAT32.

FAT32 зберігає прості метадані, такі як видимість або час модифікації для кожного файлу та папки у записі в батьківській папці файлу чи папки, створюючи дерево внизу з кореневої папки FS. Як було зазначено щодо NTFS, це не файл, а збережений у структурі даних папок. Спочатку запис був великим на 32 байти і містив такі атрибути:

Name (8.3) xxxxxxxx.yyy. (88 bits)

Attribute byte (8 bits of information, described later in this section).

One reserved byte.

Create time (24 bits).

Create date (16 bits).

Last access date (16 bits).

Two reserved bytes.

Last modified time (16 bits).

Last modified date (16 bits).

Starting cluster number in the file allocation table (16 bits).

File size (32 bits).

Список взято з цієї статті Microsoft Technet і стосується FAT16. Оскільки розмір кластера FAT32 може становити 32 біта, а ім'я файлів може бути довше 8,3, таблиця не є повністю точною. Для розміщення довгих імен файлів і великих дисків FAT32 змінює деякий поведінку , яке можна прочитати у Вікіпедії тут , але основна ідея має місце.


2
Ви можете використовувати NTFSinfo набору Sysinternal, щоб переглянути метадані та знайти будь-які розширення. Ви можете завантажити його тут: technet.microsoft.com/en-us/sysinternals/default Є кілька редакторів метаданих навколо, але я не можу рекомендувати жодного, оскільки я не використовував їх.
bjanssen

9
@ Метадані TheGoodUser-Sp, принаймні, на NTFS, не зберігаються у "файлі" у звичайному розумінні, саме це я отримую враження, яке ви шукаєте. Там є не те , що заховано в папці \ Windows де - то , що ми все просто не говоримо вам про те ; метадані файлу - це невід'ємна частина самої файлової системи.
Роб Моїр

2
У цьому випадку Flash Drive відформатоване як FAT-32. Тож метадані зберігаються у Таблиці розподілу файлів (FAT) en.wikipedia.org/wiki/File_Allocation_Table
jnovacho

2
Важливо зазначити, що таблиці розподілу для NTFS та FAT є попередньо виділеними. Він відрізняється від формату до формату, але кілька секторів зазвичай зайняті порожніми попередньо виділеними блоками, які мають бути використані для зберігання метаданих, щоб зменшити фрагментацію.
Каслай

2
Чому ви вважаєте, що метадані є фіксованим розміром? Список контролю доступу, безумовно, може значно відрізнятися за складністю; Я не бачу, як він завжди може вміститися в 1024 байтах (разом з усіма іншими метаданими, такими як час доступу та модифікації)
Ben Voigt

26

Хіба він не займає якогось розміру? !!

Так, але це невеликий запис у великому попередньо виділеному блоці. Цей блок рахується у "використаній" частині вашого диска. Додавання запису всередині цього блоку не вимагає розширення блоку.

Залежно від файлової системи, з часом блок буде заповнюватися і розширюватися якось після додавання безлічі імен файлів.

Чи можу я побачити файл метаданих у флеш-пам'яті?

Не легко

Як коментували Руслан і Блоргберд. Ви можете встановити шестигранний переглядач, такий як HxD, який дозволить вам переглядати (і редагувати - будьте дуже обережні) необроблені дані файлової системи. Але вам доведеться зробити інтерпретацію щодо того, які байти належать до якої структури файлової системи. Для цього вам знадобиться хороша документація про конкретну файлову систему, що використовується на флеш-диску. FAT32, ймовірно, буде простішим для розуміння, ніж будь-який із багатьох варіантів NTFS. Наприклад, див. Розуміння файлових систем FAT32 .


3
@TheGood Якщо я позбавлений Google, я, мабуть, почав би з завантаження Linux і ddскопіювати необроблену файлову систему в файл на інший диск, а потім скористатися шестигранним переглядачем, щоб вивчити її у поєднанні з хорошою роботою довідки щодо конкретної файлової системи (якщо не є власником і нерозголошується). Я можу змінити метадані за допомогою touch, повторити ddта використовувати двійковий розл.
RedGrittyBrick

1
Добре, що я не позбавлений Google.
Cthulhu

5
@Cthulhu: У старих немає некрономіки. fhtagn.
RedGrittyBrick

2
Не потрібно змінювати ОС, щоб безпосередньо використовувати шестигранний переглядач на жорсткому диску. Просто використовуйте гідний шестигранний переглядач. (Здається, це навіть hiewможна зробити, але я не впевнений, оскільки давно був на вікнах).
Руслан

1
HxD , безумовно, зробить це в Windows. Меню "Додатки", відкрити диск.
Blorgbeard

7

Метадані не зберігаються (не повідомляються звичайними засобами управління файлами) як файли, вони зберігаються у даних файлової системи на диску.

Залежно від характеру / версії файлової системи, кожен запис займе деяку кількість дискового простору для представлення інформації метаданих.

Крім того, поряд з місцем, виділеним у таблиці головних файлів, деякі файлові системи також зберігатимуть журнал про зміни файлів (займаючи додаткове місце), а деякі файлові системи можна навіть розширити додатковими полями, що містять метадані спеціального призначення.

Таким чином, метадані займають дисковий простір, але його не враховують більшість утиліт управління файлами, який працює API API системи, який запитує у файловій системі файловий простір, а не простір метаданих .

І ця абстракція є лише вершиною айсберга, оскільки сама файлова система працює на абстрагуванні фізичного дискового простору, що забезпечується низькими рівнями дискових процедур, тому фактично лише внутрішня логіка диска буде знати, скільки фактичних позицій пам'яті доступно для вищих рівнів і скільки позначено як ненадійні, зарезервовані або використані для контрольної суми.


3

Метадані залежать від файлової системи. Найбільш основні файлові системи, які зазвичай використовуються на обмінних носіях, базуються на файловій системі DOS (FAT). У DOS немає користувачів та дозволів. Або, правильніше, частина цієї інформації міститься у 8-му біті даних імені файлу. Єдиний накладний ресурс, який використовується в базовому DOS FS, - це облік блоків файлу або каталогу, в якому він знаходиться, - і цей блок, ймовірно, вже призначений для обробки ".". IOW, додавання порожнього файлу не додасть ще один біт пам’яті, але змінить деякі існуючі спожиті та виділені біти.

Коли ви використовуєте більш просунуті файлові системи, що містять журнали та користувачів, ви отримуєте метадані, записи журналів та, можливо, криміналістичну ланцюжок для відновлення попередніх версій файлів тощо. Потім невеликий файл може вибухнути у використаному сховищі.

Отже, перевірте тип FS. Якщо це FAT, то, ймовірно, у вас немає користувача, записаного в метадані на носії. Отже ... не використовується місце. :)

Хорошим прикладом FAT FS є реалізація з відкритим кодом - і ви можете бачити, що список доступних операцій не включає "отримати / встановити користувача" та "перевірити доступ користувачем". Без ідентичності = немає зберігання цієї ідентичності.


2

Як ви бачите на останньому зображенні вище, єдиний простір, який файл займає у спалаху, - це простір для його вмісту [символи]. Отже, де файл метаданих?

"Файл метаданих" - це каталог, який містить файл. Це в основному, що таке каталог - це набір метаданих, що описують вміст каталогу.

Я маю на увазі, коли я переміщую файл на інший комп'ютер, як він розуміє ім'я файлу, Власник файлу, Дата створення та змінення та ...?

Хіба він не займає якогось розміру? !!

Так, у довіднику. У більшості файлових систем один і той же файл може мати два різних імені, якщо він пов'язаний у двох різних каталогах.

Чи можу я побачити файл метаданих у флеш-пам'яті?

Якщо ваша файлова система підтримує її, ви можете побачити її, переглянувши розмір каталогу.


2

Де зберігаються метадані?

Коли ми говоримо про метадані, існує два типи метаданих.

Перший тип включає створену дату, останню змінену дату, дату останнього доступу. Залежно від файлової системи (наприклад, NTFS / FAT / Ext3 тощо), будуть доступні різні "метадані", наприклад власник Windows та дозвіл на NTFS.

Перший тип стосується всіх файлів, наприклад, .txt-файлу у вашому прикладі.

Усі файлові системи попередньо виділяють пробіли, щоб містити ці метадані в таблиці головних файлів (MFT для NTFS, деякі інші імена для іншої файлової системи), до яких користувачі не мають прямого доступу. Оскільки MFT не вважається частиною об'єму накопичувача, все одно не потрібно «додаткового» місця для зберігання.

Другий тип "метаданих" визначається типом файлу або додатком. Наприклад, документи Office зберігають "Автор", "Тема" та інші метадані; JPEG-зображення зберігають набір даних EXIF, включаючи "зроблену фотографію дати", "модель камери", "швидкість затвора"; а звук MP3 містить "альбом", "трек #", "бітрейт" ...

Другий тип НЕ займає додаткового місця, оскільки ці "метадані" є частиною файлу.


Різні розміри в різних приводах

Коли ваш текстовий файл увімкнено, C:\він займає 4 Кб. Він набуває розміру 1К, коли ви поміщаєте його на флешку H:\. Це тому, що для різних розділів різний "розмір блоку".

Файлам виділяються пробіли в блоці. Отже, у файловій системі розміром блоку 4K 1 байт виділяється 4K, тоді як 4977 байт (4K + 1 байт) виділяється 8K.

Мабуть, ваш C:формат має розмір блоку 4K, а H:формат - 1К розміру блоку, що призводить до різниці.


Коли я копіюю чистий текстовий файл у флеш-пам'ять, його метадані також переміщуватимуться у флеш-пам'ять. Тепер, чи є в Linux, наприклад, можливість побачити файл метаданих? наприклад у двійковій формі.
TheGoodUser

Чи будуть скопійовані метадані, залежить від того, як ви це зробите. Наприклад, robocopyви надаєте можливість копіювати часові позначки, атрибути, інформацію про власника, списки контролю доступу (ACL) тощо. Це також залежить від того, підтримує його файлова система у вашій флеш-пам’яті (наприклад, FAT32 не зберігає інформацію про власника та ACL, тому вони є відкинути все одно). Метадані не мають файл, тому ви не можете бачити необроблені дані; якщо ви хочете побачити речі низького рівня, які вам можуть знадобитися ddв Linux, але як їх інтерпретувати - це вже інша історія.
Кеннет Л
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.