
Qual é a diferença entre um link simbólico e um atalho?
Responder1
Acho que o importante é que os atalhos são apenas um arquivo. Eles têm um tamanho (pequeno, que apenas faz referência para onde apontam) e requerem um aplicativo que suporte esse tipo de arquivo para serem usados.
Um link simbólico está no nível do sistema de arquivos e tudo o vêcomoo arquivo original. Um aplicativo não precisa de suporte especial para usar um link simbólico.
Responder2
Um "Link Simbólico" pode realmente atuar como um substituto para um diretório ou arquivo de forma 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 normal que contém 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 funcionará como um subdiretório real).
Além disso, na maioria dos aplicativos do Windows, quando você clica em um atalho em qualquer diálogo Arquivo->Abrir GUI, o campo de nome do arquivo é preenchido com o nome do arquivo desse atalho e também funciona como um subdiretório, enquanto no Unix/Linux a GUI trata um link simbólico como caminho (sem modificar o campo do nome do arquivo).
Responder3
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. encontreiesta documentaçãomuito útil (especialmente a seção "Cortar/Desenrolar/Emendar Junções Externas/Links Simbólicos"). E a ferramenta também parece boa. (Ao mencionar isso, e mklink, esperamos que mais pesquisas encontrem esta discussão.)
Um atalho é um arquivo, não um link real, e geralmente só é seguido com êxito como um link quando interpretado pela UI do Windows (interface do usuário). Por exemplo, quando você clica duas vezes no atalho de uma pasta, o Windows o redireciona para esse outro local. (Isso inclui as caixas de diálogo genéricas Abrir Arquivo e Salvar Arquivo que a maioria dos aplicativos invoca.) Na minha área de trabalho, tenho um atalho para esta pasta: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\G
O nome do arquivo do atalho é: C:\Users\user5\Desktop\Games.lnk, embora o Windows suprima a extensão .lnk e mostre apenas "Jogos", mesmo se você desmarcar "ocultar extensões para tipos de arquivo conhecidos". Mas se você abrir um prompt de comando e fizer um dir, você 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
Posso criar o equivalente com um link simbólico usando a opção \D (para 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, já que este é um link de pasta.) O Windows Explorer, assim como este console e a maioria dos aplicativos, permitirá que você navegue "para baixo" neste subdiretório aparente, em vez de (a) redirecionar "transversalmente" para um local diferente ou (b) falhando.
Os atalhos não se comportam como subdiretórios. Posso invocar o comportamento de arquivo padrão da interface 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 para um atalho:
C:\Users\user5\Desktop>cd "Games.lnk"
The directory name is invalid.
A IU do Windows permite clicar com o botão direito para editar as propriedades de um atalho. Ou o seguinte mostra exatamente o que está realmente armazenado no arquivo .lnk (dados binários), embora um editor hexadecimal exibiria melhor:
C:\Users\user5\Desktop>notepad.exe "Games.lnk"
Ao tentar executar o Bloco de notas em uma subpasta real, aparece uma mensagem de erro "Acesso negado" e um Bloco de notas vazio.
Por outro lado, se eu criar um link simbólico de arquivo (não um link simbólico de pasta), posso iniciá-lo com o Bloco de Notas. Das chamadas notepad.exe a seguir, as duas primeiras funcionam e a terceira falha (ela 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 de console. Copiar um atalho do Bloco de Notas para minha área de trabalho e tentar arrastar e soltar cada um dos três nele exibe exatamente o mesmo comportamento. (Porque arrastar e soltar, ao contrário do clique duplo, permite que o aplicativo interprete o atalho.)
Com relação às diferenças entre links simbólicos de diretório e junções, consulteesta discussão, e aqui está um muitodescrição útil:
"Uma grande diferença na maneira 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 eles fazem referência a um local em um servidor de arquivos remoto. O Windows processa junções de diretório que fazem referência a um servidor de arquivos remoto. servidor de arquivos no próprio servidor podem, portanto, referir-se a locais que só são acessíveis a partir de um cliente, como outros volumes de cliente, enquanto as junções de diretório não podem. Para resolver isso, o Windows Vista oferece suporte ao novo tipo de link simbólico para ambos os 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 Delete sabe que não deve seguir os links, o que resultaria na exclusão do destino, mas sim excluir o link. No entanto, porque nem todos os aplicativos pode lidar com links simbólicos corretamente, a criação de um link simbólico requer o novo privilégio Criar link simbólico que apenas os administradores têm por padrão."
Responder4
Às vezes é bom ter um exemplo funcional, então explicarei como uso essa função.
Eu uso o Google Drive para fazer backup de arquivos, mas às vezes quero fazer backup de arquivos em uma pasta específica (não consigo movê-los para ../google drive). Especialmente com aplicativos universais do Windows 10, arquivos de configuração e outros são armazenados em appdata e, na maioria das vezes, não consigo alterar esse local.
Eu uso o aplicativo stikynot nativo do Windows e queria fazer backup de minhas anotações, então usei um link simbólico aqui. O Google Drive reconhece o link como um arquivo real e sincroniza os arquivos perfeitamente, enquanto o arquivo real ainda está na pasta appdata.
Quando tenho arquivos como pastas de projetos localmente que não quero sincronizar com a nuvem, uso atalhos (copiar, colar-> colar atalho).