Como consertar um link simbólico apontando para um local errado?

3

Estou um pouco confuso com hard / softlinks aqui. Estou no OSX, tenho uma pasta '4' e dois links apontando para ela:

drwxr-xr-x  4 imm  staff  136 14 Jun 21:24 4
lrwxr-xr-x  1 imm  staff    1 14 Jun 16:56 4.0 -> 4
lrwxr-xr-x  1 507  wheel    1 14 Jun 16:56 Current -> 4

Quando eu sigo 'Atual' na pasta, ele leva a um local completamente diferente (o caminho do qual copiei todas as coisas). Eu gostaria que 'Atual' apontasse na pasta '4' no novo local.

Como posso conseguir isso?

    
por Hedge 15.06.2011 / 14:25

2 respostas

10

Você precisa remover e recriar o link. Você pode fazer isso com

rm Current

E, em seguida, recrie-o:

ln -s /path/to/the/new/location Current

Você pode usar um caminho absoluto (por simplicidade).

Se você quiser que o caminho se mova ao mover o link, poderá usar um caminho relativo. Apenas tenha em mente que ele armazena o caminho relativo e apenas o resolve a partir da localização atual do link quando você tenta acessá-lo.

Editar: desde que você mencionou hardlinks, eu vou em frente e os apresento aqui.

Um link físico é semelhante a um link simbólico, pois ele ainda aponta para um arquivo, mas é limitado ao sistema de arquivos atual, mas também é mais rápido. Um hardlink aponta para um inode específico no disco, em vez de outro local no sistema de arquivos. Você não pode ter hardlinks relativos.

Você pode considerar um sistema de arquivos básico como uma coleção de hardlinks para locais no disco, um por arquivo. A criação de hardlinks adicionais cria apenas ponteiros adicionais para o mesmo arquivo. Eles são consideravelmente mais rápidos porque o sistema sabe exatamente onde no disco o arquivo é necessário (um link simbólico tem que ser resolvido, e então esse novo arquivo tem que ser consultado e resolvido), mas por causa disso ele é limitado apenas a inodes no sistema de arquivos atual.

O sistema de arquivos rastreia automaticamente o número de hardlinks que apontam para um determinado inode e simplesmente exclui o inode quando essa contagem atinge 0.

    
por 15.06.2011 / 14:30
5

Você pode fazer isso:

ln -nfs /path/to/the/new/location Current

onde 'Atual' é o link simbólico atual. As opções -n e -f desvinculam e removem o original 'Current' e permitem a criação do novo (-s para soft link).

Eu percebo que a pergunta foi respondida e o problema original foi resolvido há muito tempo, mas o processo de apontar um link simbólico sem passar pela etapa de exclusão estava me incomodando novamente, e uma pesquisa do Google pela solução levantou essa q & a. Espero que ajude alguém a procurar a resposta!

    
por 02.02.2014 / 16:03