MKLINK vs. Junction.exe

26

SysInternals tem um programa junction.exe que cria o Junctions (também conhecido como pontos de nova análise , também conhecidos como symlinks) no Windows.

No entanto, o Windows também vem com um mklink que parece fazer a mesma coisa.

Existe uma diferença significativa?

Eu costumo acreditar que, se a SysInternals tem seu próprio programa, eles viram uma deficiência no programa padrão do MKLink.

    
por abelenky 12.05.2014 / 16:51

2 respostas

39

Comparação

O programa junction de Mark Russinovich foi projetado com um objetivo específico em mente: criar (e excluir) pontos de junção. Foi mantido ao longo dos anos, mas nenhum novo recurso foi adicionado até agora. A versão mais recente foi lançada em 4 de julho de 2016.

Quanto a mklink , é um comando interno disponível no Windows Vista e posterior. Pode criar links físicos, pontos de junção e links simbólicos. Uma função de exclusão específica não é fornecida; você pode simplesmente usar os comandos del ou rd , dependendo se o link aponta para um arquivo ou diretório, respectivamente.

Um pouco de história

Antes do Vista, os sistemas operacionais Windows não ofereciam uma maneira de criar pontos de junção fora da caixa: você tinha que obter uma cópia do oficial Resource Kit , use um programa de terceiros ou escreva um por conta própria.

2000

A primeira versão da ferramenta junction foi lançada. Citando o site oficial:

Windows 2000 and higher supports directory symbolic links, where a directory serves as a symbolic link to another directory on the computer. [...]

Unfortunately, Windows comes with no tools for creating junctions—you have to purchase the Win2K Resource Kit, which comes with the linkd program for creating junctions. I therefore decided to write my own junction-creating tool: Junction.

Source: Junction

2005-06

O comando mklink foi introduzido no Windows Vista durante a fase beta inicial.

Ele estava disponível desde que o Beta 1 oficial foi lançado em 27 de julho de 2005. Inicialmente, ele só podia criar links simbólicos e hard links; a capacidade de criar pontos de junção veio mais tarde com o Community Technology Preview (CTP) lançado em 19 de dezembro de 2005.

Aparentemente, o comando passou completamente despercebido até algum tempo depois, em 2006, quando foi divulgado pela primeira vez. Aqui está a referência mais antiga que consegui encontrar:

You can create symbolic link in Windows Vista now.

C:\test>ver

Microsoft Windows [Version 6.0.5365]

C:\test>mklink
Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

[...]

Source: Symbolic link in Windows Vista

Além disso:

Malcolm [MSFT] (Expert):
Q: Is there a really easy way to make a symlink?
A: Open CMD, and type 'mklink'. This tool will allow you to create junctions, hardlinks and symbolic links.

Source: NTFS Beta Chat Transcript (July 12, 2006)

Informações adicionais

A file or directory can contain a reparse point, which is a collection of user-defined data. The format of this data is understood by the application which stores the data, and a file system filter, which you install to interpret the data and process the file.

For example, reparse points are used to implement NTFS file system links and the Microsoft Remote Storage Server (RSS).

Source: Reparse Points

There are three types of file links supported in the NTFS file system: hard links, junctions, and symbolic links.

Source: Hard Links and Junctions

Links físicos

A hard link is the file system representation of a file by which more than one path references a single file in the same volume. [...] Any changes to that file are instantly visible to applications that access it through the hard links that reference it. However, the directory entry size and attribute information is updated only for the link through which the change was made.

Source: Hard Links and Junctions

Junções

A junction (also called a soft link) differs from a hard link in that the storage objects it references are separate directories, and a junction can link directories located on different local volumes on the same computer.

Source: Hard Links and Junctions

Junction points can only link to directories on a local volume; junction points to remote shares are unsupported.

Source: NTFS junction point

Links simbólicos

A symbolic link is a file-system object that points to another file system object. The object being pointed to is called the target.

Symbolic links are transparent to users; the links appear as normal files or directories, and can be acted upon by the user or application in exactly the same manner.

Source: Symbolic Links

[Symbolic links] were introduced with the modifications made to the NTFS file system with Windows Vista, but available through filter drivers for Windows XP.

Unlike an NTFS junction point (available since Windows 2000), a symbolic link can also point to a file or remote SMB network path. While NTFS junction points support only absolute paths on local drives, the NTFS symbolic links allow linking using relative paths.

The default security settings in Windows Vista/Windows 7 disallow non-elevated administrators and all non-administrators from creating symbolic links.

Source: NTFS symbolic link

Leitura adicional

por 12.05.2014 / 18:37
2

Como já mencionado nos comentários, junction.exe saiu antes do Vista / Winserver 2008, que veio com o comando mklink .

Portanto, não faz sentido usá-lo no Vista em diante. Versões do Windows anteriores ao Vista não são mais suportadas de qualquer maneira.

Além disso, junction.exe não suporta Links simbólicos NTFS (somente Junções NTFS ), que foram introduzidas com o Vista / WinServer 2008 e o comando mlink .

    
por 12.05.2014 / 18:31