Um método de sincronização que cria links simbólicos?

2

Alguém sabe de um aplicativo de sincronização que pode produzir links simbólicos em vez de copiar os arquivos? Ou como seria um script em lote (do Windows) que faz isso?

Se um script é a solução, quero pesquisar recursivamente uma árvore de pastas para pastas com um determinado nome, como "Minha pasta", e apenas "sincronizar" (criar links para) essas pastas.

    
por Moss 09.09.2011 / 03:33

2 respostas

2

Então, eu aprendi alguns scripts cmd e aqui está o que eu criei:

SET target="M:\TEST"
SET filter="Personal"

forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mkdir %target%\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE rmdir %target%\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mklink /D %target%\@relpath %cd%\@relpath"

Isso procurará todas as pastas chamadas "Personal" no diretório atual e criará links simbólicos no diretório de destino. Eu tive que fazer alguns truques para preservar a estrutura da pasta. (Não queria criar links simbólicos em locais que ainda não existiam).

Pode ser complicado, assim como os programas que estou tentando gerenciar (FL Studio, neste caso).

UPDATE

Esse código teve problemas quando havia espaços nos caminhos. Muitas horas de loucura depois, aqui está o que parece funcionar. Sim, existem muitas citações.

SET target=C:\Program Files\Path With Spaces
SET filter=Personal

forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mkdir """%target%"""\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE rmdir """%target%"""\@relpath"
forfiles /s /m %filter% /c "cmd /c IF @isdir==TRUE mklink /D """%target%"""\@relpath """%cd%"""\@relpath"
    
por 09.09.2011 / 20:29
0

xxcopy tem mais de 230 switches, alguns dos quais são para manipulação de links simbólicos, como discutido aqui .

Ele pode sincronizar seus links simbólicos. Há uma versão gratuita para uso pessoal, mas não é boa para scripts automatizados, pois ela precisa de entrada do usuário (pressionando Y para OK).

    
por 10.09.2011 / 02:50