
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?
Responder1
Tecnicamente, o que a janela Propriedades mostra é o conteúdo da pasta, que se vazia ocupa 0 bytes em qualquer disco.
Sua pergunta trata de qual espaço a pastaestruturaocupa em um sistema de arquivos, que obviamente depende dele. No FAT32 as únicas coisas que você precisa armazenar são alguns sinalizadores (ocultos, arquivados) e o nome e caminho. No NTFS você também precisa armazenar permissões e mais algumas coisas. Em suma, esse espaço é quase insignificante.
O espaço é um diretório vazioestruturaocupa depende do nome e do caminho da pasta. Por exemplo, suponha que você coloque todas as pastas em uma unidade raiz (digamos 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) = nome de pasta com aproximadamente 7 (6.3065) caracteres. Portanto, 7 bytes * 1.000.000.000 equivalem a aproximadamente 7 GB de espaço.
Este é um mínimo baseado apenas na quantidade de espaço que os nomes devem ocupar 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, então esse valor nem é alcançado na realidade. Não se esqueça que esta é uma estimativa muito aproximada.
Os sistemas de arquivos mais usados atualmente podem ser considerados (indiscutivelmente) como FAT (File Allocation Table) e NTFS (New Technology File System).GORDOcomo sabemos, está em uso desde 1996, quando o Windows 95 foi lançado com FAT32. Embora tenha sido 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. Arquivos e diretórios em uma partição FAT, mesmo que não contenham nada, possuem um nome, um local, certos atributos, etc., que são armazenados em uma zona chamadatabela de diretório.
Otabela de diretórioé um arquivo especial (ou seja, está oculto para uso regular, de modo que apenas o sistema operacional e determinados aplicativos podem 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. Enquanto otabela de diretórioé um arquivo, ele então ocupa um ou mais clusters (ou seja, caixas com um tamanho predefinido dentro de um disco, onde cabe apenas um único arquivo (ou parte de um).
Portanto, qualquer pasta ou diretório, em uma unidade moderna (>512 MB), possuipelo menosuma 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 é a mesma de 4 KB 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 estimados que calculei. Esses 32 GB armazenam não apenas o nome abreviado (8 caracteres ASCII), mas também os atributos, flags, datas de acesso, criação e modificação e outros atributos legados.
Supondo que você leu tudo isso, pode haver uma pergunta que você pode ter: "Bem, tudo isso é muito bom, mas como são os nomes longos, comoWabbajackou até mesmo nomes hash comoe4d909c290d0fb1ca068ffaddf22cbd0, armazenado?"
A Microsoft no Windows 95 decidiu adicionar esse recurso para aprimorar a experiência do usuário. Para evitar quebrar um sistema “quase padrão”, eles usaram uma solução alternativa chamada VFAT (Virtual FAT). Essencialmente, para ajustar o nome longo do arquivo ao arquivo, registros adicionais foram gravados antes do registro real do arquivo (com alguns atributos especiais que não seriam vistos pelos sistemas anteriores). O sistema de nome de arquivo longo permite um comprimento máximo de 255 caracteres UTF-16 (Unicode)(fonte) (fonte).
Se você alterasse o primeiro exemplo para 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 comWikipédiaartigo 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, conforme mostrado naaqui.
O tamanho que um registro MFT ocupa de uma pasta ou de um arquivo é descrito emaqui:
Os registros de arquivos e pastas têm 1 KB cadae são armazenados na MFT, cujos atributos são gravados no espaço alocado na MFT. Além dos atributos do arquivo, cada registro do arquivo contém informações sobre a posição do registro do arquivo na MFT.
Quando os atributos de um arquivo cabem no registro do arquivo MFT desse arquivo, eles são chamados de atributos residentes. Atributos como nome de arquivo e carimbo de data/hora são sempre residentes. Quando a quantidade de informações de um arquivonão serveem seu registro de arquivo MFT, alguns atributos de arquivo tornam-senão residente.Atributos não residentes recebem um ou mais clusters de espaço em disco. Uma parte do atributo não residente permanece na MFT e aponta para os clusters externos. O NTFS cria o atributo Lista de Atributos para descrever a localização de todos os registros de atributos. A tabela Tipos de atributos de arquivo NTFS lista os atributos de arquivo atualmente definidos pelo NTFS.
Portanto, em NTFS, as pastas ocupam pelo menos 1 KB de espaço, a menos que tenham listas de argumentos e permissões muito longas; 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 a Microsoft naquela postagem recomende clusters de 4 KB.
Responder2
Para um exemplo do mundo real, acabei de registrar meu espaço livre, criei uma grande estrutura de diretórios e subtraí o novo espaço livre para descobrir quanto espaço foi usado. Criei os diretórios 0-6 para cada dia da semana, depois dentro dos diretórios 0-23 para as horas do dia e depois 0-59 para os minutos da hora. No total, são 10.080 diretórios. O uso do meu disco mudou em 6.926.336 bytes. Isso equivale a 687 bytes por diretório. Caso você se importe, isso também equivale a 0,0006% de uma unidade de 1 TB (se você calcular 1 TB como 1024 ^ 4).
Responder3
No Windows 10 criei 1.000.000 de pastas vazias e, de acordo com o pythongetsize
função, ocupou 200540160 bytes de espaço. Isso representa uma média de 200,54016 bytes por pasta.