Pesquisa de site

Crie links físicos e virtuais - Preparação para o exame RHCSA


Nesta parte da preparação para o exame RHCSA voltaremos nossa atenção para os links. Existem dois tipos de link, links físicos e links virtuais. Neste artigo falaremos sobre como criar e remover links e também discutiremos alguns antecedentes básicos por trás de ambos, os links físicos e os links virtuais.

Neste tutorial você aprenderá:

  • O que são links simbólicos (soft)

  • O que são links físicos

  • Como criar um link simbólico

  • Como criar um link físico

  • Como remover link

Página de manual do comando ln

O que são links em sistemas GNU/Linux

Cada arquivo possui informações sobre sua data de criação, modificação, acesso, bem como propriedade do arquivo e suas permissões armazenadas em um chamado inode. Além dos metadados armazenados já mencionados, o inode também armazena informações sobre um bloco de dados onde o conteúdo real do arquivo é armazenado no sistema de arquivos.

Portanto, a principal função do inode é descrever um objeto do sistema de arquivos, como um arquivo ou diretório. Para acessar o objeto do sistema de arquivos associado a um inode específico, precisamos fornecer ao usuário um hard link que é o nome real do arquivo ou diretório.

Isso explica o primeiro tipo de links que são hard links. O segundo tipo de links no sistema operacional GNU/Linux são links simbólicos, também conhecidos como soft links. A diferença entre links físicos e simbólicos é que os links simbólicos apontam apenas para links físicos, ou seja, apontam para nomes de arquivos ou diretórios existentes. Resumindo, os links permitem ao usuário acessar arquivos ou diretórios por meio de vários nomes.

Links físicos

Como os hard links estão associados aos inodes que, por sua vez, são um recurso do sistema de arquivos, os hard links não podem cruzar sistemas de arquivos e, portanto, são válidos apenas dentro do mesmo sistema de arquivos. . Além disso, não é possível criar links físicos em diretórios. Qualquer tentativa de criar um link físico a partir de um diretório resultará na mensagem de erro hard link not enabled for directory.

Vamos criar alguns links físicos. Neste exemplo, primeiro criaremos um arquivo arbitrário chamado sandbox contendo um texto linuxconfig.org. Quando estiver pronto, criaremos vários hard links para este arquivo apontando de diferentes locais.

  1. Crie um arquivo chamado sandbox contendo um texto RHCSA dentro de um diretório inicial do usuário ~/.

    
    $ echo "RHCSA" > ~/sandbox
    

    Verifique o conteúdo do arquivo usando o comando cat:

    
    $ cat ~/sandbox
    RHCSA
    
  2. Ainda localizado dentro de um diretório inicial do usuário, crie um link físico para o arquivo sandbox do diretório /tmp/ chamado hardlink1.

    
    $ ln sandbox /tmp/hardlink1
    

    Agora verifique o conteúdo do hard link recém-criado /tmp/hardlink1. O conteúdo do arquivo /tmp/hardlink1 e do arquivo sandbox original deve ser o mesmo:

    
    $ cat /tmp/hardlink1
    RHCSA
    
  3. Verifique as informações do link associadas aos nomes de arquivo sandbox e /tmp/hardlink1.

    
    $ ls -l /tmp/hardlink1
    -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
    $ ls -l ~/sandbox
    -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /home/linuxconfig/sandbox
    

    Observe o número associado 2 conforme mostrado na saída acima. Este número indica o número de links físicos associados a um inode específico.

    NOTA
    Neste estágio, é importante entender que não há diferença real entre o sandbox original e o /tmp/hardlink1 recém-criado. código> arquivo. Ambos apontam para o mesmo inode usando nomes de arquivos diferentes.

  4. Remova o link físico usando o comando unlink ou rm.

  5. 
    $ unlink sandbox 
    $ ls -l /tmp/hardlink1 
    -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
    

    Nesse caso, ambos os comandos rm ou unlink removerão um link físico, mas não os dados e o inode reais associados. Como o link físico sandbox foi removido, resta apenas 1 link físico associado ao inode original. A seguir, removeremos o último link físico associado a este arquivo:

    
    $ rm /tmp/hardlink1
    

    Neste ponto, o link para o inode que aponta para o conteúdo do nosso arquivo original é perdido, portanto consideramos este arquivo como removido. Se não houver links físicos apontando para um inode, o sistema de arquivos poderá agora substituir o local deste inode por novos dados.


$ touch file
$ unlink file

Se você entendeu os comandos acima, então você dominou os hard links do GNU/Linux conforme explicado neste tutorial.

Links simbólicos

Além dos links físicos, há também um tipo diferente de links disponíveis no sistema operacional GNU/Linux. Links simbólicos podem cruzar sistemas de arquivos, e também é possível criar um link simbólico de um diretório. No entanto, links simbólicos em vez do inode real, vinculam apenas a links físicos existentes (nome de arquivo ou diretório). Por esta razão, se o link físico real para o qual o link simbólico está apontando for removido, o link simbólico será quebrado.

  1. Vamos primeiro criar alguns objetos sandbox para brincar. Neste caso estaremos criando um diretório chamado meudir e dentro deste diretório criaremos um arquivo chamado meuarquivo.

    
    $ mkdir mydir
    $ touch mydir/myfile
    
  2. A seguir, criaremos um novo link simbólico do diretório existente mydir usando o comando ln com uma combinação da opção -s.

    
    $ ln -s ~/mydir /tmp/symdir
    

    Agora, criamos um link simbólico chamado symdir localizado no diretório /tmp.

    
    $ cd /tmp/
    $ ls -l symdir
    lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
    

    Observe o primeiro caractere da saída acima. Neste caso o caracter l indica que se trata de link simbólico.

    NOTA
    Ao criar links simbólicos, tenha em mente que o comando ln armazena o caminho real fornecido como string. Se não estiver no mesmo diretório, em muitos casos você deve fornecer o caminho completo para que o link simbólico funcione

    O symdir recém-criado deve conter o arquivo criado anteriormente myfile:

    
    $ cd symdir
    $ ls
    myfile
    $pwd 
    /tmp/symdir
    

Exercícios

  1. Brinque com links simbólicos. Crie um link simbólico para um arquivo, depois remova o arquivo original e veja o que aconteceu com seu link simbólico.

  2. O que acontece quando você executa o comando ls com apenas um único argumento. Por exemplo, execute o seguinte comando ln -s /etc/services. O que aconteceu?

  3. Determine se você precisa ser o proprietário do arquivo para criar um link simbólico para ele. A mesma regra se aplica a links físicos?

Artigos relacionados: