Como os metadados do arquivo são armazenados no Windows?

9

(Estou usando o Windows XP, mas acho que é semelhante em todas as versões recentes do Windows.)

Quando você cria, por exemplo, um novo documento de texto vazio , você encontrará em suas propriedades que ele tem tamanho de 0 bytes. Zero bytes significa sem informação . Sem dados.
Mas ainda assim, o arquivo tem algum nome, ele ainda pode carregar as datas do último acesso, modificação e criação. Ele carrega a informação, seja ela oculta ou não, seja somente leitura ou não ...

Então, onde estão todos os metadados armazenados?

    
por Jeyekomon 13.10.2013 / 22:41

4 respostas

10

Você aprendeu que os discos rígidos contêm arquivos, mas essa não é a verdade toda. Na verdade, os discos rígidos contêm um número muito grande, expresso por vários bits. Mas essa interpretação não faz sentido para você nem para o seu computador, porque o processamento de números grandes não é muito comum (e estou falando de números REALMENTE ENORMES). Em vez disso, o computador o divide em "palavras" menores (8 bits, 16 bits, 32 bits ou qualquer outra coisa) e usa assim. Ainda assim, isso é apenas um monte de palavras (vamos supor palavras de 8 bits, ou seja, bytes).

Agora, essa unidade está particionada. Expliquei por que o particionamento é uma boa ideia em esta resposta :

Generally speaking, drives can be used without partitioning. Most pendrives work like that. But using partitions has many advantages, just to name some of them:

  • You can have two OSes sitting on the same hard drive and not interfering with each other. Each one will treat its partition as a logical drive and won't mess with other ones unless you tell it to.
  • You can logically separate your data. If one partition becomes corrupted for some reason, other partitions will very likely remain intact.
  • Using partitions is better than using multiple smaller hard drives, because your system is quieter, consumes less energy and you can resize, delete, move them around etc.
  • You can use some parts of the hard drive for some special purposes.

Agora, cada partição tem seu próprio sistema de arquivos. As versões modernas do Windows usam NTFS , mas FAT , FAT32 e exFAT são suportadas para mídia externa ou partições legadas. As instalações Linux de uso diário normalmente usam sistemas de arquivos ext , sendo o ext4 o mais recente.

O Filesystem define o modo como os arquivos estão fisicamente localizados no disco. Você pode pensar assim: se você tivesse um livro de 10000 páginas sem capítulos, números de página ou quebras de linha, seria muito difícil de usar. É claro que os números das páginas e os títulos dos capítulos ocupam algum espaço na página, mas tornam o uso do livro muito mais fácil e rápido. Se você quiser pular para o capítulo, digamos, 42, basta procurar no sumário. Então você folhear o livro até encontrar o capítulo desejado. Seus arquivos são capítulos e seu sistema de arquivos é o livro. Metadados do sistema de arquivos, como limites de arquivos, nomes de arquivos, etc. ocupam espaço também, mas é uma quantidade comparativamente pequena de espaço e faz com que as coisas funcionem muito mais rápido.

Se o seu "capítulo" estiver vazio, ele ainda pode ter um cabeçalho ou um número de página, certo? Arquivo vazio contém zero bytes de dados. Os metadados ocupam espaço, mas não fazem parte do arquivo, mas do sistema de arquivos. Caso contrário, você veria nomes de arquivos em seus arquivos de texto?

A propósito, é por isso que as primeiras versões do DOS estavam aceitando apenas nomes 8.3 - o espaço reservado para nomes de arquivos era muito limitado. O NTFS permite nomes de arquivos com 255 caracteres [ 1] .

Apenas mais uma palavra no seu comentário:

I used to have a kind of virus that somehow corrupted a couple of files in my PC so that they appeared to be about 100GB in size. Each of them. On my 40GB harddisc. So there must've been some kind of magic... :-D

É completamente possível ter arquivos válidos maiores que o seu disco rígido graças a um recurso chamado arquivos esparsos . Hennes tem uma excelente explicação sobre isso em seu comentário sobre esta questão :

Imagine a binder capable of holding a 100 pages. If you use that binder as a regular file you could insert a 100 pages. You could read all 100. You could write to all 100. Now imagine a sparse binder. You insert the first page you write "page 1: Content A". You then insert a the second page you write "page 9999: content b:". Whenever you try to read a page you look if it exists. If it does not, your answer will be this is an empty page. If it does exist you return the contents of the page. Whenever you write to a page which does not yet exist in the binder you add a new sheet of paper.

    
por 13.10.2013 / 23:22
5

Acabamos de aprender hoje sobre o Windows Alternate Data Streams (ADS). Este é um fork do recurso oculto que é anexado a um arquivo. Faz parte do NTFS desde o Windows NT 3.1.

Por exemplo, se você tiver um arquivo de texto em branco, mas preencher algumas das informações de resumo na tag de propriedade do arquivo, um arquivo ADS oculto será criado e anexado ao arquivo de texto. A maioria das versões do Windows não inclui o tamanho do arquivo ADS ao reportar o tamanho do arquivo original.

Você pode criar e visualizar arquivos ADS a partir de um prompt de comando.

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

criará um arquivo test.txt com um arquivo ADS chamado hidden.txt

você pode usar este comando para editar o arquivo:

notepad test.txt:hidden.txt

Veja um artigo de fácil leitura que entra em maiores detalhes.

    
por 31.10.2013 / 17:04
2

Eu fiz uma pesquisa e me deparei com uma pergunta semelhante feita no Stack Overflow.

Basicamente, diz que o arquivo é criado e ocupa alguns bytes ou um cluster de disco rígido, etc. Depende da granularidade do disco rígido e do sistema de arquivos, etc.

Eles discutem aqui: link

com links adicionais para pesquisas futuras.

    
por 13.10.2013 / 22:55
2

Em um volume NTFS, essas informações são armazenadas em metarquivos. Em particular, o nome do arquivo e os registros de data e hora são armazenados em um metarquivo chamado $ MFT. Os metarquivos não são acessíveis pelos métodos normais do Windows, como o Explorer ou o prompt de comando.

Para mais leitura:

link

link

    
por 13.10.2013 / 23:17