Não há "seguindo o link" com hardlinks - criar um hardlink simplesmente dá vários nomes diferentes para o mesmo arquivo (em baixo nível, arquivos são na verdade números inteiros - "inodes", e eles têm nomes apenas para conveniência do usuário) - não há "original" e "cópia" - eles são os mesmos. Então, é completamente o mesmo que dos hardlinks que você abre e escreve, eles são todos iguais.
Portanto, cp
por padrão abre um arquivo e grava nele, alterando assim o arquivo (e, portanto, todos os nomes que ele possui). Então sim, é esperado. Agora, se você (em vez de reescrever) primeiro remover um dos nomes (reduzindo assim a contagem de links) e, em seguida, recriar o novo arquivo com o mesmo nome que você, você acabaria com dois arquivos diferentes. Isso é o que o cp --remove-destination
faria.
1 estão documentadas em link(2)
apontado por ln(1)
2 sim, é um comportamento normal e não um acaso. Mas veja acima observação sobre cp --remove-destination
3 não, na verdade não. Hardlinks são simplesmente vários nomes para o mesmo arquivo. O que você parece querer são links COW (copy-on-write), que só existem em sistemas de arquivos especiais
4 sim, cp --remove-destination fileB fileA