cp -al usr link
cria vários links físicos, mas também cria alguns diretórios. Diretórios não podem ser vinculados, então eles são copiados.
Cada link físico ocupa o espaço de uma entrada de diretório, que precisa armazenar pelo menos o nome do arquivo e o número do inode. Cada diretório ocupa o espaço de uma entrada de diretório, além de um inode para seus metadados. A maioria dos sistemas de arquivos, incluindo a família ext2, conta o espaço do inode separadamente. Todos os links físicos estão em diretórios criados pela operação de cópia. Portanto, o espaço que você está vendo é, na verdade, o tamanho dos diretórios em /usr
.
Na maioria dos sistemas de arquivos, cada diretório ocupa pelo menos um bloco. 4kB é um tamanho de bloco típico no Linux. Assim, você pode esperar que a cópia leve 4 × (número de diretórios) em kB, além de alguma mudança para os diretórios maiores que requerem vários blocos. Assumindo blocos de 4kB, sua cópia criou cerca de 8500 blocos, o que soa como a estimativa certa para um diretório /usr
contendo 54000 arquivos.
Os diretórios devem ter exatamente um diretório pai. Na verdade, eles têm hard links (ou pelo menos parecem assim, embora sistemas de arquivos modernos não usem hard links sob o capô): um para a entrada no pai, um para a entrada .
e um para o ..
de entrada em todos os subdiretórios. Mas você não pode fazer outros links para eles. Algumas variantes do Unix permitem que o root crie hard links para diretórios em alguns sistemas de arquivos, mas com o risco de criar loops que não podem ser removidos ou de árvores de diretórios ocultos que não podem ser acessadas.