quarta-feira, 9 de dezembro de 2009

Links Simbólicos no Windows

Bom dia!

Por esses dias tive um problema de espaço em disco na partição C:\ de um Windows Server 2003. Verificando a causa do problema notei que minha base de dados do software de backup vinha crescendo gradualmente com o tempo sendo a principal causadora dessa falta de espaço.

Para caracterizar o ambiente, nesse mesmo servidor eu possuia outra partição fora de uso e com espaço mais do que suficiente. Ótimo!

Bom descoberta a causa pensei nas soluções... Em um ambiente Linux bastava criar um Link Simbólico para a outra partição, mover os dados para lá e pronto. Porém no Windows a informação que sempre tive era que isso seria impossível de se fazer. Pensei logo em expandir minha partição com o famoso GParted, mas encontrei outro problema. Minha partição c:\ e a outra estavam em um disco dinâmico, ou seja, não podemos mexer no tamanho da partição.

Enfim, tomei um bom copo de cerveja e fui fazer algumas pesquisas quando descobri que a partir do Windows Server 2003 foi implementada nativamente uma ferramenta chamada linkd.



Essa ferramenta permite fazermos exatamente a mesma coisa que um link simbólico no Windows (ln -s). A única diferença é na ordem dos parâmentros:

Linux
$ ln -s "caminho para onde aponta" "nome do link"

Windows 2003
c:\linkd "nome do link" "caminho para onde aponta"

c:\mklink "nome do link" "caminho para onde aponta"

O que é um Link Simbólico?

Bom, primeiramente um link simbólico ou junction (como chamam no mundo Windows) é intendido como uma pasta própria pelo sistema de arquivos, ou seja, o apontamento dela fica transparente ao file system.

Quem já trabalhou com programação pode fazer uma analogia com um ponteiro.
Quem nunca ouviu falar de ponteiro pode fazer uma analogia com um simples atalho da área de trabalho (claro, um pouco mais complexo que isso! hehe).

OBS.: Não posso deixar de fazer o comentário seguinte: Nada contra, mas acho impressionando como a Microsoft sempre copia recursos de outros lugares e da nomes diferentes para eles. Por quê mudar o conceito de Simbolic Link para Junction se faz a mesma coisa e teve a mesma origem? Isso é algo completamente inútil (a não ser por marketing e provas de certificação como é o caso do ISA Server...) e talvez até engane os menos especialistas... mas nunca entendi o motivo... Bom, independente de qualquer coisa continuarei estudando pelos conceitos genéricos e fazendo uma pequena analogia com esses conceitos da MS. Isso sempre funcionou (O contrário não digo o mesmo) hehe.

Abração!