Quais são alguns usos típicos de links físicos?

9

Todos que estavam acostumados ao Windows podem imaginar o que são links simbólicos e como são usados. Por outro lado, o conceito de link físico é estranho ao Windows (estou correto?).

Gostaria de saber quais são os usos típicos dos links físicos no Linux. Já vi postagens diferentes descrevendo a diferença de como elas funcionam. O que estou perguntando é quais são algumas situações típicas em que um usuário seria melhor usando links físicos em vez de links simbólicos?

Façam
fonte
3
Esta pergunta foi feita no Unix e Linux stackexchange: Por que existem links físicos?
Flimm

Respostas:

9

Eu uso um link físico em que preciso de um único arquivo em dois ou mais lugares, prevejo que um dia desejarei excluir um dos locais e posso esquecer que tenho um link para o arquivo. Isso me impede de terminar com um link simbólico para um arquivo que não existe mais.

Esclarecimento:

Um nome de arquivo é, de fato, um link direto para o arquivo. Assim, todo arquivo tem pelo menos um link físico, sendo o que normalmente pensamos como "o" nome do arquivo. Quando você exclui um arquivo, na verdade você está removendo seu link físico (daí o nome "remover", ou seja rm, em vez de "excluir"). Quando um último arquivo é removido por um arquivo, o sistema também o exclui.

Paddy Landau
fonte
7

Links físicos permitem ...

  • um único executável para ter mais de um nome.

    Exemplo:

    ls -l /bin | grep -v ' 1 ' | sortirá listar aqueles /binpara você. Resultado ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    Em vez de 3 arquivos, bunzip2 bzcat e bzip2 usam o mesmo arquivo e, dentro do arquivo, é feita a distinção entre o que fazer. Economiza código e menos código significa menos erros possíveis e manutenção mais fácil.

  • um único arquivo a ser acessado por vários caminhos.

    Tomemos, por exemplo, um gerenciador de pacotes, que cria um diretório / usr / share / doc / $ packagename para cada pacote instalado e, dentro desse diretório, um arquivo chamado LICENSE com as informações de licença do pacote. Muitos pacotes em um sistema Linux típico são licenciados pela GPL, portanto, em vez de ter 200 cópias da GPL no sistema de arquivos, poderia haver apenas uma cópia e 199 links. ptman @ Serverfault

A razão pela qual os links físicos funcionam aqui (e os soft não): remover apenas 1 dos links físicos não remove o arquivo em si.

Rinzwind
fonte
2
"Exemplo: um movimento ( mv) é uma cópia ( cp) + uma remoção ( rm)." Isso ocorre apenas quando a origem e o destino estão em montagens diferentes. Caso contrário, a mvmove apenas o nome, não o arquivo.
Paddy Landau
11
Se você quiser ser técnico: mv altera o inode, não o nome. Mas você está correto: Parece que esse exemplo é um pouco velha hoje em dia e que eu deveria ter gzip usado como um exemplo;)
Rinzwind
3
Estamos ficando um pouco fora do assunto, mas acabei de testar isso. Enquanto o arquivo permanecer na mesma montagem, mvaltere apenas o nome; o inode permanece o mesmo.
Paddy Landau
Isso realmente não explica por que você não pode simplesmente usar links simbólicos - que podem ser salvos para alguns bytes de dados extras. Isso foi abordado corretamente nesta resposta .
Ken afiada