Qual é a diferença entre o Link simbólico e o atalho?

70

Qual é a diferença entre um link simbólico e um atalho?

    
por deepthi tm 06.03.2011 / 17:21

5 respostas

52

Acho que o ponto importante é que os atalhos são apenas um arquivo. Eles têm um tamanho (um pequeno, que apenas referencia onde eles apontam) e requerem um aplicativo para suportar esse tipo de arquivo para ser usado.

Um link simbólico é o nível do sistema de arquivos, e tudo o vê como o arquivo original. Um aplicativo não precisa de suporte especial para usar um link simbólico.

    
por 06.03.2011 / 18:58
18

Um "Link simbólico" pode realmente funcionar como um substituto para um diretório ou arquivo de uma maneira funcional e é comumente usado em ambientes Unix / Linux. Embora aparentemente haja suporte para isso no Windows, ainda não vi nenhum uso real dele.

Um "Atalho" é apenas um arquivo regular que tem uma referência ao arquivo ou diretório de destino junto com outras coisas, como o ícone a ser exibido. Ao contrário de um Link simbólico, você não pode "cd ./shortcut-name" no DOS (no Unix / Linux você pode "cd ./symlink-name" e ele funcionará exatamente como um subdiretório real).

Além disso, na maioria dos aplicativos do Windows, quando você clica em um atalho em qualquer caixa de diálogo Abrir arquivo GUI, o campo do nome do arquivo é preenchido com o nome do arquivo e atua como um subdiretório, enquanto no Unix / Linux, a GUI trata um link simbólico como um caminho (sem modificar o campo do nome do arquivo).

    
por 06.03.2011 / 18:02
9

Como outros já mencionaram, um link simbólico é um dos tipos de links disponíveis no nível do sistema de arquivos, o que o torna transparente para os aplicativos. Eu encontrei esta documentação muito útil (especialmente a "Colheita / Unroll / Splice Outer Junctions / Symbolic Links "seção"). E a ferramenta parece legal também. (Ao mencionar isso e mklink, esperamos que mais pesquisas encontrem essa discussão.)

Um atalho é um arquivo, não um link real, e geralmente só é seguido com sucesso como um link quando interpretado pela interface do usuário do Windows (interface do usuário). Por exemplo, quando você clica duas vezes em um atalho de pasta, o Windows o redireciona para esse outro local. (Isso inclui as caixas de diálogo genéricas File Open e File Save que a maioria das aplicações chama.) Na minha área de trabalho, eu tenho um atalho para esta pasta: C: \ ProgramData \ Microsoft \ Windows \ Menu Iniciar \ Programas \ G

O nome do arquivo do atalho é: C: \ Usuários \ usuário5 \ Desktop \ Jogos.lnk, embora o Windows suprima a extensão .lnk e apenas mostre "Jogos", mesmo que você desmarque "ocultar extensões de tipos de arquivos conhecidos". Mas se você abrir um prompt de comando e fizer um dir, verá:

C:\Users\user5\Desktop>dir "g*"
 Volume in drive C has no label.
 Volume Serial Number is 900...
 Directory of C:\Users\user5\Desktop
03/08/2014  05:30 PM             1,710 Games.lnk
               1 File(s)          1,710 bytes
               0 Dir(s)  246,818,222,080 bytes free

Eu posso criar o equivalente com um symlink usando a opção \ D (para o diretório):

C:\Users\user5\Desktop>mklink /D mysymlink  "C:\ProgramData\Microsoft\Windows\S
tart Menu\Programs\G"
symbolic link created for mysymlink <<===>> C:\ProgramData\Microsoft\Windows\Sta
rt Menu\Programs\G

C:\Users\user5\Desktop>cd mysymlink

C:\Users\user5\Desktop\mysymlink>

(Uma junção de diretório (\ J) também é uma opção, pois esse é um link de pasta.) O Windows Explorer, assim como este console e a maioria dos aplicativos, permite navegar "para dentro" desse aparente subdiretório, em vez de ( a) redirecionando "através de" para um local diferente ou (b) falhando.

Os atalhos não se comportam como subdiretórios. Eu posso invocar o comportamento de arquivo padrão da interface do usuário do Windows com este comando (isso abre a pasta "G" no Windows Explorer):

C:\Users\user5\Desktop>"Games.lnk"

Considerando que mysymlink está listado (veja a contagem) como um subdiretório verdadeiro e não pode ser iniciado dessa forma:

C:\Users\user5\Desktop>dir "my*"
 Volume in drive C has no label.
 Volume Serial Number is 900...

 Directory of C:\Users\user5\Desktop

03/29/2014  06:08 PM    <DIR>          mysubdir
03/29/2014  05:40 PM    <SYMLINKD>     mysymlink [C:\ProgramData\Microsoft\Windo
ws\Start Menu\Programs\G]
               0 File(s)              0 bytes
               2 Dir(s)  246,816,153,600 bytes free

C:\Users\user57\Desktop>mysubdir
'mysubdir' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\user57\Desktop>mysymlink
'mysymlink' is not recognized as an internal or external command,
operable program or batch file.

Por outro lado, você não pode alterar o diretório em um atalho:

C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.

A interface do usuário do Windows permite clicar com o botão direito do mouse para editar as propriedades de um atalho. Ou o seguinte mostra exatamente o que é realmente armazenado no arquivo .lnk (dados binários), embora um editor hex seja exibido melhor:

C:\Users\user5\Desktop>notepad.exe "Games.lnk"

Considerando que tentar executar o Bloco de notas em uma subpasta real é exibida uma mensagem de erro "Acesso negado" e um bloco de notas vazio.

Por outro lado, se eu fizer um link simbólico de arquivo (não um link simbólico de pasta), posso iniciá-lo com o Bloco de Notas. Das seguintes chamadas do notepad.exe, as duas primeiras funcionam e a terceira falha (abre o arquivo .LNK, o gobbledegook binário).

C:\Users\user5\Desktop>mklink symplain.txt plain.txt
symbolic link created for symplain.txt <<===>> plain.txt

C:\Users\user5\Desktop>notepad.exe "symplain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt"

C:\Users\user5\Desktop>notepad.exe "plain.txt.lnk"

Isso não é apenas uma coisa do console. Copiando um atalho para o Bloco de Notas na minha área de trabalho e tentando arrastar e soltar cada um dos três, ele exibe exatamente o mesmo comportamento. (Como arrastar e soltar, ao contrário do clique duplo, permite que o aplicativo interprete o atalho.)

Em relação às diferenças entre links simbólicos de diretório e junções, consulte esta discussão , e aqui está uma descrição útil :

"Uma grande diferença na forma como o Windows resolve links simbólicos e junções de diretório é onde o processamento ocorre. O Windows processa links simbólicos no sistema local, mesmo quando fazem referência a um local em um servidor de arquivos remoto. Windows processa junções de diretório que referenciar um servidor de arquivos remoto no próprio servidor Os links simbólicos em um servidor podem, portanto, referir-se a locais que só podem ser acessados de um cliente, como outros volumes de cliente, enquanto que junções de diretório não podem.Para resolver isso, o Windows Vista suporta o novo tipo de link simbólico para arquivos e diretórios.

"Muitos comandos do sistema de arquivos foram atualizados para entender as implicações dos links simbólicos. Por exemplo, o comando Excluir não sabe seguir os links, o que resultaria na exclusão do destino, mas para excluir o link. No entanto, porque nem todos os aplicativos podem manipular links simbólicos corretamente, criar um link simbólico requer o novo privilégio Criar link simbólico que somente administradores têm por padrão. "

    
por 30.03.2014 / 00:19
1

"Symbolic Links differ from Shortcuts in that they offer a transparent* pathway to the desired data object, with a shortcut (.lnk), something has to read and interpret the content of the shortcut file and then open the file that it references (i.e. it is a two step process). When an application uses a symlink it gains immediate access to the data object referenced by the symlink (i.e. it is a one step process)."

Fonte: link

    
por 27.04.2018 / 18:05
0

Às vezes é bom ter um exemplo funcional, então eu explico como eu uso essa função.

Eu uso o Google Drive para fazer backup de arquivos, mas às vezes eu quero fazer backup de arquivos em uma pasta específica (não consigo movê-los para ../google drive). Especialmente com o windows 10 aplicativos universais, arquivos de configuração e tal são armazenados em appdata, e na maioria das vezes eu não posso mudar este local.

Eu uso o aplicativo windows stikynot nativo, e eu queria fazer backup de minhas anotações, então usei um symlink aqui. A unidade do Google reconhece o link como um arquivo real e sincroniza os arquivos bem, enquanto o arquivo real ainda está na pasta appdata.

Quando eu tenho arquivos como pastas de projeto localmente que eu não quero sincronizar com a nuvem, eu uso atalhos (copiar, colar passado > atalho).

    
por 26.03.2018 / 13:16