Diretórios em sistemas de arquivos ext4 geralmente têm pelo menos 2 links. A entrada em seu diretório pai e a entrada .
em si. Veja lá para mais detalhes.
Dito isto, se o sistema de arquivos é inconsistente, você pode muito bem ter um diretório ligado em mais de um lugar e a contagem de links para não refleti-lo.
Por exemplo, com debugfs -w
(em um fs desmontado), você pode fazer link a/b c/d
para forçar a criação de um link para um diretório. Você perceberá que a contagem de links não está atualizada (você precisaria de sif a/b links_count 3
para atualizá-lo):
$ ls -lid a/b c/d a/b/. c/d/.
12 drwxr-xr-x 2 chazelas chazelas 1024 May 14 08:37 a/b/
12 drwxr-xr-x 2 chazelas chazelas 1024 May 14 08:37 a/b/./
12 drwxr-xr-x 2 chazelas chazelas 1024 May 14 08:37 c/d/
12 drwxr-xr-x 2 chazelas chazelas 1024 May 14 08:37 c/d/./
A contagem de links é 2 acima, mesmo que haja 3 links (para a, para c, e o "." para si mesmo).
Observe que fsck
relataria um problema com isso:
Pass 2: Checking directory structure
Entry 'd' in /c (1282) is a link to directory /a/b (12).
Clear<y>?
Portanto, é improvável que seja o seu caso aqui se o fs tiver acabado de passar por um fsck.
Para remover um desses links, você pode usar debugfs -w
novamente (depois de ter desmontado o sistema de arquivos) e fazer unlink c/d
nele, ou usar fsck
. Se um directory
tiver mais de um link, você poderá verificar a entrada ..
dentro dele (com debugfs
ls
) para verificar qual é o correto ( ..
terá o mesmo número de inode que o correto pai).