Como posso encontrar links físicos no Windows?

33

Eu criei alguns links físicos no meu sistema de arquivos do Windows 7 usando o mklink. Foi há algum tempo e não me lembro ao certo onde ou quais arquivos. Quando eu uso o Explorer, todos os arquivos têm a mesma aparência. Quando eu uso a linha de comando e digito "dir", todos parecem iguais.

Como encontro links físicos? Ou como determino se um arquivo específico é um link físico?

MILÍMETROS.
fonte

Respostas:

33

Todos os arquivos são links físicos, com contagem de links de pelo menos 1.

É por isso que os arquivos têm a mesma aparência. Eles são iguais. O que você parece estar procurando são arquivos nos quais há mais de um link para o arquivo. Há muito pouco que distingue um arquivo com uma contagem de links maior que um de um arquivo com uma contagem de links de um… exceto a contagem de links (e algum comportamento estranho em relação aos atributos e carimbos de data).

E isso é fácil de verificar com o findcomando que está no kit de ferramentas utilitárias SFUA da Microsoft , que é executado no Subsistema para Aplicativos Baseados em Unix :

encontrar . -links +1

JdeBP
fonte
9
apenas como uma nota, cygwin / bin / find também funciona. Obrigado!
Arcyqwerty 18/09/12
6
Só para esclarecer que a "Microsoft find" que está sendo referenciada na solução aqui não é o Windows 7. padrão instalado. Você precisa baixar e instalar uma nova Microsoft find. Então você pode usar esse findutilitário. Ou instale o findcomando do Cygwin como @arcyqwerty (que provavelmente terá melhor suporte a longo prazo).
Trevor Boyd Smith
2
Também pode usar o built-in fsutil hardlink list filename. (veja a resposta de Sergey )
Svish
28

No Windows 7, use o comando:

fsutil hardlink list MyFileName.txt

Ele lista todos os hardlinks para arquivar com o nome MyFileName.txt.

Sergey
fonte
Observe que você precisa ser administrador para executar o fsutil.
Alastair Maw
2
@AlastairMaw Em pelo menos o Windows 10, você não precisa ser um administrador para executar esse comando específico. Ou funciona para ser administrador sem o UAC? (isto é, apenas o grupo sem elevação real)
Paul Stelian
9

Infelizmente, não há como o sistema operacional encontrar todos os seus hardlinks sem olhar para cada arquivo.

Para o Explorer, você pode baixar a muito útil Extensão Shell de Link , que sobrepõe arquivos com hardlinks com uma seta vermelha semelhante a um atalho.

Também facilita a criação de links físicos, links simbólicos e junções através do menu de contexto do Explorer.

Conversas bônus:

Tecnicamente, todos os arquivos são hardlinks. Assim, você está realmente procurando arquivos com mais de um hardlink.

surfasb
fonte
11
Na verdade é. Veja a resposta de Sergey .
Svish
11
A resposta de Sergey funciona para a segunda parte da pergunta, mas não a primeira.
surfasb
3

use finddupe :

finddupe -listlink c:\photos
eadmaster
fonte
-listlink Coloca o finddupe no modo de localização do hardlink. Nesse modo, o finddupe listará quais grupos de arquivos estão vinculados juntos. Todas as instâncias vinculadas encontradas de um arquivo são mostradas juntas. No entanto, o finddupe pode encontrar apenas instâncias do arquivo com link físico que estão dentro do caminho da pesquisa.
Shayan
3

 Uma maneira simples de verificações pontuais: os atributos do arquivo estão mudando juntos?

Se você quiser testar se os arquivos Ae Bsão ligações diretas para o mesmo conteúdo e você não deseja instalar ou executar qualquer coisa, abra as Propriedades janela de arquivo Ae de alternância, por exemplo, a sua Read-only atributo. Agora abra a janela Propriedades do arquivo Bpara ver se a alteração do atributo (do arquivo A) ocorreu aqui também. Se sim, então a resposta é positiva.

Por que isso funciona? Porque os links físicos relacionados compartilham o mesmo conjunto de atributos de arquivo e carimbos de data e hora.

Dito isto, o mesmo teste pode ser feito com registros de data e hora dos arquivos, mas eles não podem ser alterados tão facilmente quanto o sinalizador somente leitura para executar a verificação.

miroxlav
fonte