Respostas:
Para usar uma analogia da entrega de correio, um link simbólico é algo como um endereço de encaminhamento ... quando algo tenta abrir um link simbólico, ele abre o "arquivo" (embora não seja literalmente um arquivo) armazenado lá e vê que ele deve procurar um arquivo com um nome diferente, para que ele abra o outro arquivo.
Um link físico é mais como ter dois endereços para o mesmo local. (Claro que isso não é realmente possível no mundo físico). Quando algo tenta ler o nome de um arquivo (endereço), ele obtém o mesmo arquivo físico (local).
Portanto, um link físico não é uma cópia, porque o arquivo é armazenado apenas uma vez (mas com vários nomes). Mas ele se comporta como uma cópia, porque você pode acessar as mesmas informações de dois nomes de arquivos.
/foo
e /bar
, a alteração /foo
também mudará /bar
se forem links físicos (porque são dois nomes para o mesmo arquivo), mas não se forem cópias (porque são dois arquivos completamente independentes).
Não. Um link físico (segundo e todos os subsequentes) para um arquivo é um ponteiro para os mesmos inodes no disco.
Quando você cria um link físico, significa que o mesmo arquivo aparece em dois lugares diferentes. Um arquivo é realmente apenas uma referência a um conjunto de blocos de dados em discos, portanto, um link físico adiciona outra referência. Os arquivos raramente são realmente excluídos; as referências são removidas e, portanto, é impossível acessar os dados. É por isso que, quando você exclui um arquivo criado como um link físico, o outro arquivo original permanece e vice-versa.
Por outro lado, um link simbólico é uma direção para acessar um arquivo com um determinado nome. Diz a todos os programas: "Se você deseja usar este arquivo, está lá". É por isso que se você excluir o destino do link simbólico, o link simbólico será interrompido. E se você excluir o link, o destino não será afetado.
Um arquivo no sistema * nix possui duas partes. uma parte dos dados e outra é inode. O inode armazena informações meta (informações relevantes para os dados, como local onde estão armazenadas no HDD). O link físico cria cria uma cópia exata desse inode. Enquanto o link sym cria um inode que aponta para o inode do inode real. Portanto, os dados do inode no hardlink são os mesmos do destino, mas os dados diferentes no link sym. Portanto, para encurtar a história, os links simbólicos e os hard links diferem pelo conteúdo dos dados do inode e não pelos dados do arquivo. Este é o meu entendimento da diferença entre o link sym e o hard link. Eu tive um tempo difícil inicialmente entender isso, pois isso é algo mais interessante para o desenvolvedor e eu não sou um desenvolvedor. Oh conhecedores, por favor, corrija-me se eu estiver errado.