Ponteiros de links absolutos, capazes de funcionar em outro sistema

3

Eu tenho uma pasta e dentro dela há muitos links.

Eu faço esses links absolutos, para que eu possa movê-los dentro da pasta e eles ainda apontam para os mesmos dados. Links relativos seriam interrompidos se eu os movesse dentro da pasta.

Mas o problema surge quando eu movo a pasta para outro sistema, digamos, um disco rígido externo ou servidor. Então todos os links absolutos têm a base errada em seu endereço.

Se fosse possível que os links tivessem uma variável em seu endereço apontando, isso resolveria esse problema.

Isso é possível?

    
por Hermann Ingjaldsson 24.07.2012 / 10:36

3 respostas

2

Eu acho que a resposta para o seu problema são links simbólicos variantes, embora eles só existam no DragonFlyBSD até onde eu saiba (veja a pergunta anterior: links simbólicos dinâmicos )

    
por 24.07.2012 / 20:16
2

O comando

symlinks -cr folder

converterá todos os links simbólicos absolutos em folder para relativo. Assim, você pode mover a pasta inteira com os links apontando para sua localização relativa correta (supondo que todos apontem para outros arquivos em folder )

Então, algo como ...

find folder -type l -exec echo 'LNK=$(readlink -f "{}");rm -fv "{}";ln -sv "$LNK" "{}"' ';' > xlinks
chmod +x xlinks
./xlinks

... converterá todos os links de relativo para absoluto.

(Nota: Eu desisti de tentar executar o comando diretamente do find . De qualquer forma, ele te dá uma chance de checar o que ele vai fazer!)

    
por 24.07.2012 / 20:53
1

Você não pode ter seu bolo e comê-lo. Os links relativos geralmente são melhores, porque você pode movê-los e copiar toda ou parte da árvore para outro local.

Se você mover um arquivo dentro da hierarquia, não está claro o que deve acontecer: se houver links a -> b e c -> d e você executar mv b d , deve a agora aponte para d ? Cabe a você decidir. Links simbólicos apontam para um local; Se você quiser apontar para um arquivo, use um link físico (isso não é possível para diretórios).

Se você mover um arquivo, mas ainda quiser encontrá-lo em seu local antigo, adicione um link simbólico do local antigo ao novo local.

    
por 25.07.2012 / 02:23

Tags