104.5 Criar e Mudar links Físicos e Simbolicos (Peso 2)
Cirar e gerenciar links físicos e simbolicos em um arquivo.
- Criar links
- Identificar links fisicos e simbolicos
- Copiar versus linking files
- Utilizar links para dar suporte a tarefas administrativas de sistema
ln
Links Físicos ou Hard Links
Links são apontamentos para arquivos. A utilização de links é bem comum para facilitar a administração do sistema.
Para exemplificar melhor vamos criar um arquivo chamado aplicacao.conf
echo "Minhas Configurações" > aplicacao.conf
Agora vamos criar um link físico desse arquivo. Para fazer isso basta utilizar o comando ln
ln aplicacao.conf ap.conf
Com o comando acima criamos um arquivo, ou melhor, um link físico do arquivo aplicacao.conf
chamado app.conf
. Se executarmos o comando ls
nesses dois arquivos com o parametro -i
veremos que os dois apontam para o mesmo inode
.
ls -li app.conf aplicacao.conf
11010096 -rw-rw-r-- 2 alphabraga alphabraga 23 Abr 11 22:09 aplicacao.conf
11010096 -rw-rw-r-- 2 alphabraga alphabraga 23 Abr 11 22:09 app.conf
A primeira coluna do output do comando ls
exibe os inodes
dos arquivos. Fica evidente que os dois arquivos tanto o link físico e o arquivo possuem o mesmo número de inode
, ou seja, os dois arquivos na verdade apontam para o mesmo endereço no disco o que significa que os dois possuem o mesmo conteudo. Executando um cat
nos dois arquivos podemos comprovar isso.
cat aplicacao.conf
Minhas Configuraçõescat app.conf
Minhas Configurações
Uma alteração realizada utilizando o arquivo app.conf
afeta o aplicacao.conf
. Isso porque na verdade eles representam o mesmo endereço no disco. Podemos observar isso abaixo:
"Novas Configurações" >> aplicacao.conf
cat app.conf
Minhas Configurações Novas Configurações
Mesmo alterando apenas o arquivo aplicacao.conf
o arquivo app.conf
tambem exeibe as modificações.
Caso seja realizada a exclusão de um dos arquivos (link ou arquivo) nada ocorre. A exclusão de um não interfere no outro.
Não é possivel criar links físicos em partições distintas. Veja no exemplo abaixo onde o usuario tenta criar links físicos em partições distintas.
df -h
Sist.fichs Tama Ocup Livre Uso% Montado em udev 1,9G 0 1,9G 0% /dev tmpfs 385M 6,3M 378M 2% /run /dev/sda2 231G 71G 149G 33% / tmpfs 1,9G 4,2M 1,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup /dev/sda1 511M 3,5M 508M 1% /boot/efi tmpfs 385M 52K 385M 1% /run/user/1000touch /boot/efi/teste
ln /boot/efi/teste /link-teste
ln: falhou ao criar hard link '/link-teste' => '/boot/efi/teste': Link entre dispositivos inválido
Não é permitida a criação de links físicos de pastas. Veja abaixo:
mkdir minhas-configs
ln minhas-configs link-minhas-configs
ln: minhas-configs: ligação persistente não autorizada para a pasta
Links Simbolicos
O para criar links simbolicos utilizamos o comando ln
com parametro -s
. Veja o exemplo abaixo:
touch novas-configs.app
ln -s novas-configs.app link-novas-configs
ls -li novas-configs.app link-novas-configs
11010574 lrwxrwxrwx 1 alphabraga alphabraga 17 Abr 11 22:44 link-novas-configs -> novas-configs.app 11010481 -rw-rw-r-- 1 alphabraga alphabraga 0 Abr 11 22:43 novas-configs.app
Já vemos de cara que eles possuem inodes
diferentes, essa já seria uma diferença de links simbolicos e físicos. Alem disso vemos que existe um caracter l
proximo aos caracteres de permissões. O l
é de link, esse caractere não aparece em links físicos. Um link simbilico sempre tera as pemissoes rwxrwxrwx
.
Podemos ainda criar links simbolicos de pastas. Essa já é a segunda diferença entre links fisicos e simbolicos. Veja o exemplo abaixo:
mkdir minhas-configs && cd touch minhas-configs/pricipal.conf minhas-configs/secundaria.conf
ln -s minhas-configs configs
cd configs
ls -l
-rw-rw-r-- 1 alphabraga alphabraga 0 Abr 11 22:41 pricipal.conf -rw-rw-r-- 1 alphabraga alphabraga 0 Abr 11 22:41 secundaria.conf
Já em links a exclusão do arquivo ou pasta na qual um link simbolico aponta causa um problema. Vamos ter um link quebrado que aponta para um lugar que não existe mais. Voltando ao primeiro exemplo dessa sessão onde foi criado um link simbolico chamado link-novas-configs
iremos realizar a exclusão do arquivo novas-configs.app
que é pra onde nosso link aponta.
ls -li novas-configs.app link-novas-configs
11010574 lrwxrwxrwx 1 alphabraga alphabraga 17 Abr 11 22:44 link-novas-configs -> novas-configs.app 11010481 -rw-rw-r-- 1 alphabraga alphabraga 0 Abr 11 22:43 novas-configs.apprm novas-configs.app
cat link-novas-configs
cat: link-novas-configs: Ficheiro ou directoria inexistente
A referência foi perdida pois o arquivo na qual o link simbolico faz referencia não existe mais.
E possivel fazer links simbolicos de uma partição apontando um arquivo em outra partição. Veja abaixo:
df -h
Sist.fichs Tama Ocup Livre Uso% Montado em udev 1,9G 0 1,9G 0% /dev tmpfs 385M 6,3M 378M 2% /run /dev/sda2 231G 71G 149G 33% / tmpfs 1,9G 4,2M 1,9G 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup /dev/sda1 511M 3,5M 508M 1% /boot/efi tmpfs 385M 52K 385M 1% /run/user/1000ln -s /boot/efi/teste /link-teste