I metadati non occupano alcuna dimensione?


51

Ho inserito 4096 caratteri in un file di testo e l'ho salvato. Poiché ogni carattere è 1 byte, la dimensione del file di testo deve essere 4K byte. Come vedi di seguito va bene:

inserisci qui la descrizione dell'immagine

Collego la mia memoria flash al mio computer. lo spazio libero nella memoria flash è di 1,717,518,336byte :

inserisci qui la descrizione dell'immagine

Ho creato una copia del file nella mia memoria flash. E ancora uno sguardo allo spazio libero. ha 1,717,514,240byte di spazio libero:

inserisci qui la descrizione dell'immagine

Vediamo qual è la differenza:

1.717.518.336 - 1.717.514.240 =4096 byte


La mia domanda :

Q1:

Come vedete nell'ultima immagine sopra, l'unico spazio che il file occupa sul flash è lo spazio per il suo contenuto [caratteri]. Quindi dov'è il file dei metadati?

Voglio dire, quando sposto il file su un altro computer, come capisce il nome del file, il proprietario del file, la data di creazione e modifica e ...?

Non occupa alcuna dimensione? !!

Q2:

Posso vedere il file dei metadati nella memoria flash?

inserisci qui la descrizione dell'immagine

Apprezzo il tuo tempo e considerazione.


10
i metadati sarebbero contenuti nel filesystem stesso. che non fa parte delle dimensioni del file riportate da Windows. Inoltre, i metadati FAT32 e NTFS sarebbero diversi.
Ramhound,

@Ramhound quando sposto il file di testo nella memoria flash, anche il suo file di metadati si sposta nella memoria flash, giusto? come posso vederlo?
TheGoodUser


1
Oltre a comprendere gli interni del sistema operativo (vale la pena di per sé), probabilmente non c'è motivo di guardare o modificare tali informazioni a meno che non si stia scrivendo un programma di riparazione / ripristino del disco. Per un uso normale, non vorrai mai alterare le informazioni a questo livello in quanto potrebbero minare facilmente l'integrità del file system stesso e di tutto ciò che lo utilizza.
Joe,

3
Risposta breve: occupa spazio, ma non viene conteggiato come parte della dimensione del file.
user253751

Risposte:


50

Sì, i metadati occupano spazio. Su NTFS occupa 1024 byte, per essere precisi. Tuttavia, le informazioni non sono memorizzate nel file, ma nella tabella dei file master MFT. In particolare nel record MFT n $AttrDef. 4 .

Vedi questo articolo Technet per i dettagli: la tabella 3.5 contiene tutti i record MFT definiti.

Quando un volume viene formattato con NTFS, vengono creati un file MFT (Master File Table) e altri pezzi di metadati. I metadati sono i file utilizzati da NTFS per implementare la struttura del file system. NTFS riserva i primi 16 record della MFT per i file di metadati.

NTFS crea un record di file per ciascun file e un record di directory per ogni directory creata su un volume NTFS. La MFT include un record di file separato per la stessa MFT. Questi record di file e directory sono archiviati nella MFT. Gli attributi del file vengono scritti nello spazio allocato nella MFT. Oltre agli attributi di file, ogni record di file contiene informazioni sulla posizione del record di file nella MFT.

Si noti che altri file system possono gestire i metadati in modo diverso.

EDIT: Nella sezione commenti è stato sottolineato che a questa risposta manca il punto perché l'OP ha richiesto metadati su filesystem FAT32, non NTFS. Se sapessi come, rimuoverei l'attributo "risposta corretta". Pertanto, fornisco ulteriori informazioni che rispondono alla domanda relativa a FAT32.

FAT32 salva semplici metadati come visibilità o tempo di modifica per ciascun file e cartella in una voce nella cartella principale del file o della cartella, creando un albero in giù dalla cartella principale di FS. Come sottolineato per quanto riguarda NTFS, questo non è un file ma salvato nella struttura dei dati delle cartelle. La voce originariamente aveva una dimensione di 32 byte e conteneva i seguenti attributi:

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).

L'elenco è stato preso da questo articolo di Microsoft Technet e riguarda FAT16. Poiché la dimensione del cluster di FAT32 può essere di 32 bit e il nome dei file può essere più lungo di 8.3, la tabella non è completamente accurata. Per contenere nomi di file lunghi e dischi più grandi, FAT32 modifica alcuni comportamenti che possono essere letti nella Wikipedia qui, ma l'idea di base è valida.


2
È possibile utilizzare NTFSinfo della suite Sysinternal per esaminare i metadati e trovare eventuali estensioni. Puoi scaricarlo qui: technet.microsoft.com/en-us/sysinternals/default Ci sono diversi editor di metadati in giro, ma non posso consigliare nessuno perché non li ho usati.
Bjanssen,

9
@ I metadati di TheGoodUser-Sp, almeno su NTFS, non sono memorizzati in "un file" nel senso convenzionale, che è quello che ho l'impressione che stai cercando. Non c'è qualcosa nascosto nella cartella \ windows da qualche parte di cui non vi stiamo parlando; i metadati dei file sono parte integrante del filesystem stesso.
Rob Moir,

2
In questo caso, l'unità flash è formattata come FAT-32. Quindi le metada sono archiviate in File Allocation Table (FAT) en.wikipedia.org/wiki/File_Allocation_Table
jnovacho

2
È importante notare che le tabelle di allocazione per NTFS e FAT sono preallocate. Differisce da un formato all'altro, ma molti settori sono generalmente occupati da blocchi preallocati vuoti che devono essere utilizzati per archiviare i metadati al fine di ridurre la frammentazione.
Kaslai,

2
Cosa ti fa pensare che i metadati siano di dimensioni fisse? L'elenco di controllo degli accessi può certamente variare molto in complessità; Non riesco a vedere come può sempre adattarsi a 1024 byte (insieme a tutti gli altri metadati come i tempi di accesso e modifica)
Ben Voigt

26

Non occupa alcuna dimensione? !!

Sì, ma è una piccola voce in un grande blocco pre-allocato. Quel blocco viene conteggiato nella parte "usata" del disco. L'aggiunta di una voce all'interno di quel blocco non richiede l'espansione del blocco.

A seconda del file system, alla fine il blocco verrà riempito ed esteso in qualche modo dopo l'aggiunta di molti nomi di file.

Posso vedere il file dei metadati nella memoria flash?

Non facilmente

Come hanno commentato Ruslan e Blorgbeard. Puoi installare un visualizzatore esadecimale come HxD che ti permetterà di visualizzare (e modificare - stai molto attento) i dati grezzi del filesystem. Ma dovrai interpretare te stesso riguardo a quali byte appartengono a quali strutture di filesystem. Per questo sarebbe necessaria una buona documentazione del filesystem specifico utilizzato sul disco flash. È probabile che FAT32 sia più semplice da comprendere rispetto a una delle tante varianti di NTFS. Vedi ad esempio Comprensione dei filesystem FAT32 .


3
@TheGood Se privo di Google, probabilmente inizierei avviando Linux e usando ddper copiare il filesystem flash raw su un file su un altro disco, quindi utilizzare un visualizzatore esadecimale per esaminarlo insieme a un buon lavoro di riferimento sul filesystem specifico (se non proprietario e non divulgato). Potrei modificare i metadati con touch, ripetere dde usare un diff binario.
RedGrittyBrick

1
Meno male che non sono privato di Google.
Cthulhu,

5
@Cthulhu: i vecchi non hanno bisogno del necronomicon. fhtagn.
RedGrittyBrick

2
Non è necessario modificare il sistema operativo per utilizzare direttamente un visualizzatore esadecimale su un disco rigido. Basta usare un visualizzatore esadecimale decente. (Sembra addirittura che hiewpossa farlo, ma non sono sicuro da quando ero su Windows molto tempo fa).
Ruslan,

1
HxD lo farà sicuramente, su Windows. Menu Extra, Apri disco.
Blorgbeard,

7

I metadati non vengono archiviati (né riportati dai normali strumenti di gestione dei file) come file, ma archiviati sui dati del filesystem su disco.

A seconda della natura / versione del filesystem, ogni voce richiederà una certa quantità di spazio su disco per rappresentare le informazioni sui metadati.

Inoltre, oltre allo spazio assegnato nella tabella dei file master, alcuni filesystem manterranno anche il diario sulla modifica dei file (occupando spazio aggiuntivo) e alcuni filesystem possono anche essere estesi con campi aggiuntivi contenenti metadati per scopi speciali.

Quindi tecnicamente i metadati occupano spazio su disco, ma non sono presi in considerazione dalla maggior parte delle utility di gestione dei file che funzionano chiamando l'API del sistema che richiede al file system lo spazio per i file , non per lo spazio dei metadati .

E questa astrazione è solo la punta dell'iceberg, poiché il filesystem stesso funziona su un'astrazione dello spazio su disco fisico sottostante, fornito da routine del disco di basso livello, quindi in realtà solo la logica interna del disco saprà quante posizioni di memoria effettive sono disponibili per livelli più alti e quanti sono contrassegnati come non affidabili, riservati o utilizzati per il checksum.


3

I metadati dipendono dal file system. I file system più basilari normalmente utilizzati su supporti intercambiabili si basano su un file system DOS (FAT). DOS non ha utenti e autorizzazioni. O, più correttamente, alcune di queste informazioni vengono trasportate nell'ottavo bit di dati del nome del file. L'unico sovraccarico di risorse che viene utilizzato in un DOS DOS di base è quello di tenere conto dei blocchi del file o della directory in cui si trova - e quel blocco probabilmente è già già stato impegnato per la gestione di ".", Già. IOW, l'aggiunta di un file vuoto non aggiungerebbe un altro bit di memoria, ma cambierebbe alcuni bit consumati e allocati esistenti.

Quando si utilizzano file system più avanzati, con journaling e utenti, si ottengono metadati e voci di diario e possibilmente una catena forense per ripristinare versioni di file precedenti, ecc. Quindi un piccolo file può esplodere nella memoria utilizzata.

Quindi, controlla il tipo di FS. Se è FAT, probabilmente non hai un utente registrato nei metadati sul supporto. Quindi ... nessuno spazio utilizzato. :)

Un buon esempio di FAT FS è un'implementazione open source e puoi vedere che l'elenco delle operazioni disponibili non include "get / set user" e "check access by user". Nessuna identità = nessuna memorizzazione di tale identità.


2

Come vedete nell'ultima immagine sopra, l'unico spazio che il file occupa sul flash è lo spazio per il suo contenuto [caratteri]. Quindi dov'è il file dei metadati?

Il "file di metadati" è la directory che contiene il file. Questo è fondamentalmente ciò che è una directory - una raccolta di metadati che descrivono il contenuto della directory.

Voglio dire, quando sposto il file su un altro computer, come capisce il nome del file, il proprietario del file, la data di creazione e modifica e ...?

Non occupa alcuna dimensione? !!

Sì, nella directory. Nella maggior parte dei file system, lo stesso file può avere due nomi diversi se è collegato in due directory diverse.

Posso vedere il file dei metadati nella memoria flash?

Se il tuo filesystem lo supporta, puoi vederlo guardando la dimensione della directory.


2

Dove sono conservati i metadati?

Quando parliamo di metadati, ci sono due tipi di metadati.

Il primo tipo include la data di creazione, la data dell'ultima modifica, la data dell'ultimo accesso. A seconda del file system (es. NTFS / FAT / Ext3 ecc ...) saranno disponibili diversi "metadati", ad esempio il proprietario di Windows e le autorizzazioni su NTFS.

Il primo tipo si applica a tutti i file, ad esempio il file .txt nel tuo esempio.

Tutti i file system pre-allocano spazi per contenere questi metadati nella tabella dei file master (MFT per NTFS, alcuni altri nomi per altri file system), che non è direttamente accessibile dagli utenti. Poiché la MFT non viene conteggiata come parte della capacità dell'unità, non è comunque necessario spazio di archiviazione "aggiuntivo".

Il secondo tipo di "metadati" è definito dal tipo di file o dall'applicazione. Ad esempio, i documenti di Office mantengono "Autore", "Oggetto" e altri metadati; Le immagini JPEG mantengono una serie di dati EXIF ​​tra cui "data scattata", "modello di fotocamera", "tempo di posa"; mentre il suono MP3 contiene "album", "track #", "bitrate" ...

Il secondo tipo occupa spazio aggiuntivo, poiché questi "metadati" fanno parte del file.


Dimensioni diverse in unità diverse

Quando il file di testo è attivo C:\, occupa 4K. Diventa 1K di dimensione quando lo metti sulla tua unità flash H:\. Questo perché diverse "dimensioni del blocco" per le diverse partizioni.

Ai file sono assegnati spazi in blocco. Pertanto, su un file system di dimensioni blocco 4K, 1 byte viene allocato 4K mentre 4.097 byte (4K + 1 byte) vengono allocati 8K.

Apparentemente il tuo C:è formattato con la dimensione del blocco 4K mentre H:è formattato con la dimensione del blocco 1K, con conseguente differenza.


Quando copio un file di testo vuoto in una memoria flash, anche i suoi metadati verranno spostati nella memoria flash. ora, c'è un modo, ad esempio in Linux, per vedere il file dei metadati? in binario per esempio.
TheGoodUser il

La copia dei metadati dipende da come lo si fa. Ad esempio, robocopyti dà la possibilità di copiare timestamp, attributi, informazioni sul proprietario, liste di controllo degli accessi (ACL) ecc. Dipende anche dal supporto del file system sulla tua memoria flash (ad es. FAT32 non mantiene le informazioni del proprietario e ACL in modo che siano scartato comunque). I metadati non sono in forma di file, quindi non è possibile visualizzare i dati non elaborati; se vuoi vedere cose di basso livello che potresti aver bisogno ddin Linux ma come interpretarle è un'altra storia.
Kenneth L,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.