O que é um link físico no Linux?

9

Pesquisei e estou tentando entender a diferença entre um link físico e um link simbólico (link virtual).

Eu encontrei este link é bastante útil. Mas ainda não estou muito claro. Eu entendo soft link não é uma cópia do arquivo original, mas é um link duro uma cópia ou não?

    
por icn 20.06.2011 / 05:36

4 respostas

15

Para usar uma analogia da entrega de mensagens, um link simbólico é algo como um endereço de encaminhamento ... quando algo tenta abrir um link simbólico, ele abre o "arquivo" (não literalmente um arquivo) armazenado lá, e vê que deve, em vez disso, olhar para um arquivo com um nome diferente, então ele abre o outro arquivo.

Um link físico é mais como ter dois endereços para o mesmo lugar. (Claro que isso não é realmente possível no mundo físico). Quando algo tenta ler o nome do 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 muito como uma cópia, porque você pode acessar as mesmas informações de dois nomes de arquivos.

    
por 20.06.2011 / 05:48
3

Não. Um (segundo e todos os subsequentes) link físico para um arquivo é um ponteiro para os mesmos inodes no disco.

    
por 20.06.2011 / 05:43
3

Quando você faz 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. Arquivos raramente são realmente excluídos; as referências são removidas, então é impossível acessar os dados. É por isso que quando você exclui um arquivo que você criou como 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 certo nome. Diz a todos os programas: "Se você quiser usar este arquivo, está lá". É por isso que se você deletar o alvo do symlink, o link simbólico será quebrado. E se você excluir o link, o alvo não será afetado.

    
por 20.06.2011 / 05:51
2

Um arquivo no sistema * nix tem duas partes. uma parte dos dados e outra é inode. inode armazena informações meta (informações relevantes para os dados, como localização onde no disco rígido são armazenadas). O link físico faz uma cópia exata desse inode. Enquanto sym link cria um inode que aponta para o inode do inode real. Portanto, os dados de inode no hardlink são os mesmos que o alvo, mas dados diferentes no sym link. Então, para resumir a longa história, os links sym 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 link simbólico e link físico. Eu tive um tempo difícil inicialmente entender isso como isso é algo mais desenvolvedor e não sou um desenvolvedor. Oh, aqueles que sabem, por favor, corrijam-me se eu estiver errado.

    
por 20.06.2011 / 08:24