O título dessa coluna me lembrou uma ocasião onde eu e CAT (nosso colunista) estávamos em um hotel bem chique, onde todos os cartazes estavam escritos em duas línguas. No elevador, tinha um aviso em português para um determinado andar: “Health Center com Personal Trainer” e embaixo a tradução para o inglês “Health Center with […]
O título dessa coluna me lembrou uma ocasião onde eu e CAT (nosso colunista) estávamos em um hotel bem chique, onde todos os cartazes estavam escritos em duas línguas. No elevador, tinha um aviso em português para um determinado andar: “Health Center com Personal Trainer” e embaixo a tradução para o inglês “Health Center with Personal Trainer”
Deixando de lado a questão do estupro do nosso idioma nacional, o título “Symbolic Links no Windows” é bastante elucidativo se você souber o que é um Symbolic Link .
Certamente você já ouviu falar e usa regularmente os “atalhos” (shortcuts) do Windows. Em qualquer diretório você pode criar um desses apontando para outra pasta ou arquivo, de forma que se você clicar no atalho você será tele transportado para o destino apontado nele. A pasta “Meus Documentos” é um atalho um pouco mais sofisticado, chamado de “atalho do sistema”, pois embora esteja fisicamente alojada em uma das pastas escondidas nas configurações locais do usuário, ela pode ser vista no “Meu computador” ou nas pastas do Windows Explorer. Por falar nisso, a Microsoft tem um pequeno e ótimo utilitário chamado PowerToys TweakUI que permite, entre outras coisas, mudar o endereço físico da pasta “Meus Documentos” e de outros atalhos do sistema. No meu caso, a pasta Meus Documentos fica no disco D: imune a formatações e outras mazelas.
O problema dos atalhos é que eles só funcionam na navegação entre as janelas, e não no endereço físico de um arquivo. Vamos supor que você fez um programa que verifica se um determinado arquivo existe, e se ele existir uma ação será tomada. Só que o arquivo em questão é comum a dois programas: no programa ABC (que fica no diretório ABC) o arquivo fica no subdiretório ABC/docs/nome_do_arquivo.
No programa XYZ, o arquivo fica sob o mesmo diretório, portanto XYZ/docs/nome_do_arquivo. Só que o diretório /docs/ e seu conteúdo é idêntico nos dois casos, e para evitar manter duas cópias idênticas, poderíamos usar no diretório XYZ um atalho “/docs/” apontando para “/docs/” no ABC. Para efeito de navegação isso funciona muito bem, mas para um programa que depende de endereços reais, não.
Ao testar se o arquivo ABC/docs/nome_do_arquivo existe, o programa retornará como TRUE (verdadeiro), pois de fato é o arquivo real com endereço físico conhecido. Mas ao testar XYZ/docs/nome_do_arquivo retornará um FALSE, pois o atalho /docs/ não funciona para redirecionar para o diretório ABC quando se trata de um endereço físico.
Esse problema aconteceu comigo essa semana, quando decidi trocar o servidor de testes do Fórum PCs (restrito a minha rede local) que roda sob Windows. A versão antiga utilizava o servidor WEB IIS da Microsoft. A versão de produção é executada sob Linux, e utiliza o servidor WEB Apache. A idéia de um servidor de testes é que ele seja exatamente igual ao de produção, por isso a necessidade de alterar o sistema. Infelizmente meus parcos conhecimentos de Linux ainda me impedem de configurar e manter um servidor de testes sob esse sistema operacional. A solução paliativa foi utilizar o servidor Apache sob Windows, que atenderia minhas necessidades nesse momento.
Com o Apache devidamente configurado, veio a necessidade de compartilhar alguns diretórios entre o Fórum PCs e o Fórum do Hardware, especialmente aqueles diretórios com imagens que são comuns aos dois sites.
No Linux podemos criar um Symbolic Link, ou seja, um diretório no Fórum do Hardware que aponta fisicamente para um diretório no Fórum PCs, sendo transparente para a navegação ou para os programas que fazem a leitura nesses endereços. No Windows isso não me parecia possível, até que nosso amigo “Google” me trouxe a resposta.
Bill Gates não é bobo. Ele sabe que o Windows tem recursos escondidos para suportar as principais necessidades de qualquer usuário, e mesmo quando não tem, ele manda fazer e disponibilizar para alguns poucos, pelas intrincadas páginas de suporte da Microsoft. Foi nelas que descobri os Junction Points ou melhor, “Pontos de Junção” que existem desde o Windows 2000, mas muito mal documentado.
Para quem quiser conhecer mais sobre esse assunto:
How to create and manipulate NTFS junction points Specifying a Namespace Extension Hlscan.exe: Hard link display tool Fsutil: reparsepoint
Vocês já devem saber que um arquivo nada mais é do que um grupo de setores do disco rígido agrupados logicamente para gerar uma informação. Um diretório (ou pasta, ou folder) não existe fisicamente, mas é uma entrada na tabela de alocação de setores que informa ao sistema operacional que todos os setores relacionados estão debaixo daquele diretório, criando assim uma estrutura hierárquica de arquivos.
Um ponto de junção é uma outra entrada nessa tabela de alocação que faz duas coisas: aponta para um outro grupo de setores que formam vários arquivos, e monta o volume lógico com esses arquivos e diretórios. Se você fizer o download do Resource Kit do Windows 2000 você terá alguns programas a base de linha de comando que vão permitir a montagem desses pontos de junção, que vão operar praticamente da mesma forma que um Symbolic Link no Linux.
Para quem gosta de uma interface mais amigável, há o Junction Link Magic , gratuito mas voltado a usuários experientes que permite a manipulação desses links com alguma segurança.

Fiquem atentos aos avisos, pois os links necessariamente precisam ser diretórios vazios (que vão apontar para diretórios com conteúdo), só funciona sob NTFS e não podem apontar para diretórios em uma rede local. Cuidado também ao mover partições, pois os links serão quebrados, e só montem pontos de junção com destinos existentes em uma partição montada com uma letra atribuída.
Não apague (delete) um ponto de junção porque o esperto Windows irá apagar todos os arquivos que nele são apontados. Para apagar o link você deve usar a ferramenta para “desmontar” o link, transformando-o novamente em um diretório vazio, e em seguida você pode apagá-lo. Há um bizarro comportamento ao apagar (mandar para lixeira) um ponto de junção ainda montado e depois tentar restaurá-lo, por isso não recomendo nem que tentem…
Outra dica válida: evitem alterar as permissões de um ponto de junção e seus descendentes (arquivos que estão em outro local) porque a coisa pode ficar confusa…
Já deu para perceber que os Symbolic Links no Windows (os tais pontos de junção) funcionam de forma precária, mas funcionam. No meu caso, onde o objetivo era compartilhar alguns diretórios comuns a dois sites durante a fase de desenvolvimento, funcionou com perfeição.
Para quem gosta de aventuras radicais, experimentem mover a pasta “Arquivo de Programas” para outro disco ou partição, deixando no lugar um ponto de junção. Antes, por segurança, façam um backup completo do disco.
