Eu devo explicar um pouco da estrutura do sistema de arquivos Linux para explicar isso. A maioria dos sistemas de arquivos linux faz algo semelhante, mas eu assumo ext4, que é o padrão atual.
Estrutura do sistema de arquivos
- inode é o bloco básico que o sistema de arquivos entende como uma unidade lógica.
- Um diretório inode contém referências a outros inodes.
- Um arquivo inode contém os metadados, dados reais e referências a blocos de continuação, caso o arquivo tenha que ser armazenado de maneira não contígua.
Links
- O Ext4 suporta dois tipos de links. Duro e macio.
- Um link físico é uma referência ao inode diretamente. Cada arquivo tem pelo menos um link físico, do diretório ao qual pertence.
- Como um diretório é apenas um inode, com informações sobre o grupo de referências de inode, ele pode fazer referência a si mesmo ou a um pai. Em outras palavras, uma pasta pode ser filha e pai para a mesma pasta.
Ok, isso pode estar ficando confuso. Deixe-me explicar. Suponha que você tenha três pastas, A, B, C da seguinte forma.
C is in B.
B is in A.
Agora, a parte divertida é que C pode apontar para o mesmo inode como A, criando o que às vezes é chamado de loop de referência circular. Se você tentar recursing, você encontrará um loop interminável.
- Links suaves são arquivos comuns que registram o caminho do diretório para o local de destino. Eles são marcados no sistema de arquivos que, em vez de uma linha de texto, devem ser interpretados como um link para algum outro local. O Nautilus, por exemplo, cria links suaves quando você usa as opções 'Criar link' / 'Vincular aqui'.
Então o que?
Portanto, tentar calcular tamanhos de forma recursiva tem suas peculiaridades. É uma má ideia tentar calcular os tamanhos recursivamente por padrão. No entanto, as caixas de diálogo de propriedades de todos os gerenciadores de arquivos decentes que conheço mostram tamanhos totais recursivamente calculados, porque é o que um usuário comum espera.O Windows não tem problema?
Na verdade, o Windows usa um formato de sistema de arquivos diferente chamado NTFS, que mantém uma lista de todos os arquivos e seu tamanho. Por isso, pode sempre dizer facilmente o tamanho total.
Então por que não usamos o NTFS?
Ele não suporta a noção Unix de permissões ( rwx
para proprietário, grupo e universo separadamente), e esse único motivo o torna inadequado para uso como um sistema de arquivos Linux. Ext4 traz muito à mesa que esta pequena inconveniência não importa para muitos.
Tudo bem. Me dê o tamanho que eu preciso.
Você tentou du
?
Como o du
funciona?
du
significa uso do disco. Na verdade, conta os blocos de inodes, tomando cuidado para não contá-los duas vezes. Adicione os tamanhos e você terá o tamanho total.
TL; DR
Use du -hs <foldername>
para encontrar o tamanho real da pasta no disco. Leia man du
para mais informações.