Estendendo seu teste para três pastas, você pode ver que somente a primeira vez que o inode é atingido, o du
conta. Se você for para a pasta individual e executar du
, você obterá o tamanho total.
Para testar:
mkdir alexandru
ln mariano/zero_file.2 alexandru/zero_file.0
du -sh *
Agora você deve ver alexandru
ocupando o 500K +. Então, sem olhar para o código du
, eu acho que ele armazena uma lista de inodes percorridos e não revisita os que já foram vistos.