Quanto espaço os diretórios vazios ocupam?
No sistema de arquivos Windows e NTFS, diz '0 bytes', o que é impossível.
Quanto é realmente ocupado por um diretório? Depende do sistema de arquivos ou sistema operacional?
filesystems
disk-space
ShadowHero
fonte
fonte
Respostas:
Tecnicamente, o que a janela Propriedades está mostrando é o conteúdo da pasta, que, se vazia, ocupa 0 bytes em qualquer disco.
Sua pergunta lida com o espaço que a estrutura de pastas ocupa em um sistema de arquivos, o que obviamente depende dele. No FAT32, as únicas coisas que você precisa armazenar são alguns sinalizadores (ocultos, arquivados) e o nome e o caminho. No NTFS, você também precisa armazenar permissões e mais algumas coisas. Em suma, esse espaço é quase insignificante.
O espaço que uma estrutura de diretórios vazia ocupa depende do nome e do caminho da pasta. Como exemplo, suponha que você coloque todas as pastas em uma unidade raiz (por exemplo, C :) e use todos os 26 caracteres alfabéticos; com 1 bilhão de nomes exclusivos, você pode ter log_26 (1.000.000.000) = aproximadamente cerca de 7 (6,3065) nomes de pastas com comprimento de caracteres. Portanto, 7 bytes * 1.000.000.000 equivalem a aproximadamente 7 GB de espaço.
Isso é mínimo, apenas com base na quantidade de nomes de espaço que precisam assumir em qualquer estrutura. Como será mostrado, os sistemas de arquivos armazenam muito mais informações além do nome do arquivo em sua estrutura de arquivos.
Acho que tenho cerca de 1 milhão de pastas e arquivos em todas as minhas unidades, para que esse valor nem seja atingido na realidade. Não esqueça que esta é uma estimativa muito aproximada.
Os sistemas de arquivos mais usados no momento podem ser considerados (sem dúvida) como FAT (File Allocation Table) e NTFS (New Technology File System). O FAT, como o conhecemos, está em uso desde 1996, quando o Windows 95 foi lançado com o FAT32. Embora substituído por outros sistemas de arquivos mais resilientes, como NFTS (Windows), HFS + (OSX) ou ext3 (Linux), ainda é amplamente utilizado em dispositivos portáteis ou em cartões de memória ou unidades flash, pois é bem suportado pela maioria dos sistemas operacionais. e acima de tudo, é simples.
Agora, o que importa. Os arquivos e diretórios em uma partição FAT, mesmo que não contenham nada, têm um nome, um local, certos atributos, etc., armazenados em uma zona chamada tabela de diretório .
A tabela de diretórios é um arquivo especial (ou seja, está oculto ao uso regular, de modo que somente o SO e certos aplicativos possam acessá-lo diretamente). Ele representa um diretório (também conhecido como pasta) e qualquer arquivo ou pasta armazenado nele possui uma entrada de 32 bytes na tabela. Como a tabela de diretórios é um arquivo, ela ocupa um ou mais clusters (ou seja, caixas com um tamanho predefinido em um disco, onde apenas um único arquivo (ou parte de um) se encaixa).
Portanto, qualquer pasta ou diretório, em uma unidade moderna (> 512 MB), possui pelo menos uma sobrecarga de 4 KB, para armazenar a tabela (fonte) . No entanto, isso significa que você pode armazenar 128 arquivos diferentes (4 * 1024 B / 32 B = 128) na mesma pasta e a sobrecarga no armazenamento dos registros ainda é o mesmo 4KB de antes.
Pegando carona no primeiro exemplo, isso significaria que o bilhão de pastas teria uma sobrecarga de 32 GB, em vez dos aproximadamente 7 GB que eu calculei. Esses 32 GB armazenam não apenas o nome abreviado (8 caracteres ASCII), mas também os atributos, sinalizadores, datas de acesso, criação e modificação e outros atributos herdados.
Supondo que você leia tudo isso, pode haver uma pergunta que você possa ter: "Bem, tudo está bem e bom, mas como estão armazenados os nomes longos, como Wabbajack ou até mesmo os hash, como e4d909c290d0fb1ca068ffaddf22cbd0 , armazenados?"
A Microsoft no Windows 95 decidiu adicionar esse recurso para aprimorar a experiência do usuário. Para evitar a quebra de um sistema "quase padrão", eles usaram uma solução alternativa chamada VFAT (Virtual FAT). Essencialmente, para ajustar o nome do arquivo longo ao arquivo, registros adicionais foram gravados antes do registro do arquivo real (com alguns atributos especiais que não podem ser vistos pelos sistemas anteriores). O sistema de nome de arquivo longo permite um comprimento máximo de 255 caracteres UTF-16 (Unicode) (origem) (origem) .
Se você alterasse o primeiro exemplo, de forma que cada pasta tivesse 9 caracteres, a sobrecarga dobraria de 32 GB para 64 GB, pois seria necessário gravar mais um registro para armazenar o nome longo.
De acordo com o artigo da Wikipedia sobre NTFS, todas as permissões são armazenadas na tabela de arquivos mestre. Seu espaço pode ser visto aparentemente através do Desfragmentador de Disco, como mostrado aqui .
O tamanho que um registro MFT ocupa de uma pasta ou arquivo é descrito aqui :
Portanto, no NTFS, as pastas ocupam pelo menos 1 KB de espaço, a menos que tenham longas listas de argumentos e permissões; nesse ponto, o registro MFT ocupa um cluster adicional na partição, cujo tamanho depende de como foi formatado, embora para mais de 2 GB da Microsoft nessa publicação seja recomendado clusters de 4KB.
fonte
Para um exemplo do mundo real, eu apenas gravei meu espaço livre, criei uma grande estrutura de diretórios e subtraí o novo livre para descobrir quanto espaço foi usado. Criei diretórios de 0 a 6 para cada dia da semana, depois dentro dos diretórios de 0 a 23 por horas do dia e depois de 0 a 59 por minutos da hora. No total, seus 10.080 diretórios. O uso do meu disco foi alterado em 6.926.336 bytes. Isso funciona para 687 bytes por diretório. Caso você se importe, isso também resulta em 0,0006% de uma unidade de 1 TB (se você calcular 1 TB como 1024 ^ 4).
fonte
No Windows 10, criei 1.000.000 de pastas vazias e, de acordo com a
getsize
função do python , ocupou 200540160 bytes de espaço. Isso é uma média de 200,54016 bytes por pasta.fonte