Nos sistemas de arquivos no estilo Unix (inclusive no Linux), os arquivos não estão "em" nenhum lugar específico. Em vez disso, o sistema usa links físicos para apontar em partes o que equivale a um grande blob de dados. Portanto, ao criar um arquivo, você também cria seu primeiro hardlink: aquele que realmente reside no local em que você "salvou" o arquivo. Se você criar mais links físicos, até onde o sistema sabe, o arquivo realmente existe em vários locais ao mesmo tempo.
Quando você "exclui" um arquivo, normalmente você está realmente excluindo apenas o hardlink existente no local especificado. É por isso que a chamada do sistema para excluir arquivos é chamada unlink()
. O sistema não excluirá o arquivo até que não haja mais links físicos. Mas uma vez que o último hardlink é destruído, os dados também.
Então, para onde vão os arquivos que você exclui? Se ainda houver hardlinks, esses arquivos estarão onde estiverem os hardlinks que você não excluiu. Se não houver mais hardlinks, os arquivos desaparecerão.