Qual é o tamanho real do arquivo?

5

No Windows XP, em File Properties , qual é o tamanho real do arquivo? Tamanho ou tamanho no disco?

Estou procurando o tamanho exato do arquivo, em bytes. Por que o Windows culpa o uso de espaço extra no disco, em vez de chamá-lo de Size Windows takes to store this file ?

    
por Robinicks 07.01.2009 / 16:37

8 respostas

17

Eu não acredito que este é um problema específico do Windows. Como os discos são alocados em blocos, o arquivo ocupará potencialmente mais espaço no disco do que o tamanho real se o tamanho do arquivo não for um número exato do tamanho do bloco de discos.

Considere:

File         |------3.4k------|   |-------------4.1k--------| 
Disk Blocks  |--------4k----------|--------4k----------|--------4k----------|

Os arquivos no disco devem estar alinhados aos blocos alocados (eles devem iniciar onde um bloco é iniciado). Por exemplo, se o tamanho real dos arquivos for 3.4k e o tamanho do bloco do disco for 4k, o tamanho dos arquivos no disco será 4k porque mesmo que existam apenas 3.4k de dados no arquivo, ele está efetivamente ocupando 4k no disco, porque você não pode usar o restante desse bloco para nada.

    
por 07.01.2009 / 16:56
18

Tamanho é o número real de bytes no arquivo.

Tamanho no disco é o número de bytes que o arquivo ocupa no disco. Geralmente, esse é um número mais alto porque o espaço em disco só pode ser alocado em blocos, portanto, haverá espaço extra de folga reservado no disco no final do arquivo para preencher o último bloco. Mas esse espaço não é realmente parte do arquivo.

    
por 07.01.2009 / 16:42
10

Antes de despertar o espaço do disco no Windows, você deve entender um pouco sobre como praticamente todos os sistemas de arquivos gerenciam o espaço em discos rígidos.

O pedaço de espaço endereçável "menor" em um HDD é um setor (geralmente 512 bytes), e você não pode ler ou escrever menor que isso. Se você quiser escrever um byte em um setor, você deve ler o setor, modificar o byte e escrever o setor de volta. É assim que a física / eletrônica funciona. Um "bloco" geralmente é um ou mais setores e representa o menor espaço que o sistema de arquivos alocará para um arquivo. Os sistemas de arquivos "baseados em FAT" antigos do DOS aumentaram o tamanho do bloco à medida que o tamanho do disco aumentava.

Por muitas razões, os sistemas de arquivos preferem não ter múltiplos arquivos compartilhando o mesmo setor. Imagine se você quiser criar um arquivo um pouco mais - que o "espaço desperdiçado" no final do setor pode ser usado, antes que setores adicionais sejam alocados para tornar o arquivo maior.

E, embora seja teoricamente possível ter um sistema de arquivos que possa alocar arquivos de disco em uma base por byte (ou mesmo por bit), a quantidade de armazenamento de manutenção em disco para acompanhar isso aumentaria e provavelmente superaria qualquer vantagens que você pode ter ganho. E o desempenho provavelmente seria muito ruim ...

    
por 07.01.2009 / 17:03
6

O Windows sempre calculou o tamanho do arquivo corretamente quando exibido em unidades maiores (1 KB = 1.024B, etc.).

Tamanho é o tamanho real do arquivo, enquanto tamanho no disco é o tamanho real tirado no disco rígido. Como os discos rígidos são divididos em blocos, você precisa consumir um bloco completamente. Eu seria como ter um balde de 4L e você tem 5L de água, você precisaria de dois baldes para segurar a água.

    
por 07.01.2009 / 16:42
5

Tamanho. Tamanho-no-disco é o número de blocos * blocos necessários para armazenar o arquivo na unidade.

    
por 07.01.2009 / 16:41
4

o tamanho no disco está se referindo ao fato de que o disco é dividido em blocos, então um disco usando blocos de 4kb reportará um tamanho no disco de 4k

Eu fiz um arquivo de texto com um caractere e ele relata corretamente que o tamanho do arquivo é de 1 bytes. O tamanho no disco é 4k porque esse é o menor espaço no disco que um arquivo pode ocupar.

    
por 07.01.2009 / 16:44
1

Mmmm, defina "real". O arquivo sempre ocupará algum número integral de blocos; Eu esqueci o que é o tamanho do bloco no sistema de arquivos do Windows (eu realmente não usei o Windows em aproximadamente 10 anos), mas tenho certeza que você pode obter o número de blocos de DIR ou, no pior dos casos, instalando o Cygwin e usando ls . Portanto, o tamanho do arquivo "real" é blocksize × number of blocks nesse sentido.

Ou, como o arquivo pode terminar no meio do bloco, o tamanho "real" do arquivo pode ser o número real de bytes, caso em que wc -c daria isso.

    
por 07.01.2009 / 16:42
1

O NTFS pode armazenar arquivos muito pequenos na entrada de diretório para que eles não ocupem tamanho no disco e sejam muito rápidos de acessar.

Tony

    
por 07.01.2009 / 16:56