AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1526777
Accepted
NewSites
NewSites
Asked: 2020-02-20 15:04:42 +0800 CST2020-02-20 15:04:42 +0800 CST 2020-02-20 15:04:42 +0800 CST

Obtendo e compreendendo uma lista de links NTFS

  • 772

Eu tenho aprendido sobre links NTFS ( 1 , 2 ) e brincando com eles no meu computador. É um mundo estranho de pseudônimos para nomes de arquivos e nomes de pastas, e ainda não sei por que os tenho, mas o que é certo é que tenho muitos deles.

Os links NTFS são hard links ou pontos de nova análise e os pontos de nova análise são pontos de junção ou links simbólicos.

Para me familiarizar com eles, tenho tentado gerar uma lista completa de todos os links NTFS em meu computador.

Este é um computador de duas unidades com o sistema operacional em C: e dados em D:. O sistema operacional é o Windows 10 Pro 64 v 1903 (estou relatando aqui os resultados registrados antes da atualização para v 1909). O PowerShell é o padrão do Windows v 5.1.

A seguir, os termos "diretório" e "pasta" são sinônimos.

Todos os links

PowerShell aparentemente tem, desde v 5.0, duas propriedades não documentadas de cmdlets "item": LinkTypee target( 1 , 2 , 3 , 4 ). LinkType tem os valores "Junction", "SymbolicLink" e "HardLink". Portanto, isso deve ser capaz de listar todos os links NTFS no meu computador. No entanto, não funciona de forma confiável. Em particular, falha em certos objetos na pasta "Usuários" . Por exemplo, no PowerShell:

PS C:\WINDOWS\system32> echo ("1. " + ("C:\Documents and Settings" | get-item -force).LinkType)
echo ("2. " + ("C:\Program Files\Microsoft Office\root\Client\AppvIsvSubsystems32.dll" | get-item -force).LinkType)
echo ("3. " + ("C:\Program Files\NVIDIA Corporation\NvTelemetry\plugins\NvTelemetry" | get-item -force).LinkType)
echo ("4. " + ("C:\ProgramData\Desktop" | get-item -force).LinkType)
echo ("5. " + ("C:\Users\All Users" | get-item -force).LinkType)
echo ("6. " + ("C:\Users\Default User" | get-item -force).LinkType)
1. 
2. SymbolicLink
3. Junction
4. 
5. 
6. 

Os resultados correspondentes dir /aLno prompt de comando do Windows (veja a seguir abaixo) são:

1. JUNCTION
2. SYMLINK
3. JUNCTION
4. JUNCTION
5. SYMLINKD
6. JUNCTION

Portanto, parece que, pelo menos para o PowerShell 5.1, LinkTypenão é confiável.

Pontos de nova análise

No cmdlet do PowerShell get-ChildItem, o parâmetro attributetem a propriedade ReparsePoint. Isso deve permitir a identificação de pontos de nova análise, mas não distingue entre pontos de junção e links simbólicos, portanto não é tão útil quanto dir /aL, discutido a seguir.

O comando Windows (Prompt de Comando, não PowerShell) dir /aL /s X:\ lista todos os pontos de nova análise no diretório X. Executando como administrador, não encontrou nenhum na unidade de dados e 574 na unidade do sistema, principalmente nas pastas "Arquivos de Programas" (não "Arquivos de Programas (x86)") e "Users", e também alguns em "Program Data" e um em "Windows".

Na saída desse dircomando, os alvos são indicados entre colchetes após os nomes dos objetos e a coluna que geralmente tem o tamanho do arquivo ou " <DIR>" agora tem cinco valores diferentes: 0 (que é presumivelmente um tamanho de arquivo), o usual <DIR>, e os três novos valores: <JUNCTION>, <SYMLINK>, <SYMLINKD>. No meu computador, apenas no drive do sistema, esses valores ocorreram com a seguinte frequência e características do link e objetos de destino:

 Count   Type/Size    Link object        Target object
   11    <JUNCTION>   Folder with root   Folder with root
   36                 Folder not found   Folder with root
    9                 Folder not found   Folder w/o root
    7                 Folder not found   Folder not found
   10    <SYMLINK>    dll file           dll file
    1    <SYMLINKD>   Folder w/o root    Folder w/o root
  488    <DIR>        Folder with root   None
   12    0            exe file           None
 ----
  574    Total

Nessa tabela, os tipos de objeto têm os seguintes significados: (Nesta lista de itens, dirsignifica executar diro objeto no Prompt de Comando (não no PowerShell) como administrador sem parâmetros (especificamente, sem o /aLparâmetro).)

  • Pasta com raiz: dirproduz uma listagem que se parece com uma listagem de diretório normal, começando com <DIR> .para representar o próprio objeto (diretório).
    • Exemplo (objeto de destino):dir "C:\Users\Public\Documents"
  • Pasta sem raiz: dirproduz uma listagem de um ou mais objetos que não começam com nenhum deles <DIR> .ou com o nome do próprio objeto.
    • Exemplo (objeto de destino):dir "C:\Users\Public\Desktop"
  • Pasta não encontrada: dirretorna "Arquivo não encontrado" e o nome do objeto não se parece com um nome de arquivo com extensão. (No PowerShell, dirresulta em "Acesso a... negado.")
    • Exemplo (objeto de link):dir "C:\Documents and Settings"
  • Arquivo: dirproduz uma listagem de um item, que é o nome do próprio objeto.
    • Exemplo (objeto de link):dir "C:\Program Files\Microsoft Office\root\Office16\C2R64.dll"

Obviamente, <JUNCTION>indica um ponto de junção, enquanto <SYMLINK>e <SYMLINKD>indica links simbólicos para arquivos e pastas. Mas tenho dúvidas sobre outras informações aqui:

  • Quais são os 500 objetos que dir /aLdizem ser pontos de nova análise, mas são marcados como <DIR>ou com tamanho de arquivo zero e sem alvos? Os <DIR>objetos são pontos de junção ou links simbólicos ou algo mais? Os arquivos de tamanho zero são links simbólicos ou algo mais? Se são links, para o que são links?
  • Quais são as listagens de diretório que não começam com <DIR> .("Pasta sem raiz")? Eu nunca vi isso antes.
  • Por que alguns pontos de junção e seus alvos são encontrados por dir(sem /aL), enquanto outros não?

Links físicos

Não parece ser uma maneira fácil e nativa de obter uma lista de links físicos. Aqui estão seis respostas do Stack Exchange que encontrei até agora sobre o assunto:

  • Descubra se um arquivo é um link simbólico no PowerShell .
    • A resposta de Anton Krouglov tem o comando PS para obter links usando LinkType, o que pode funcionar para links físicos.
    • Resposta por "b_ball" tem script PS para hard links usando FSutil.
  • Como visualizar todos os links simbólicos, pontos de junção, links físicos em uma pasta usando o diretório?
    • A resposta de "Jimadine" tem um script em lote para obter links físicos usando FSutil, mas não consegui fazê-lo funcionar.
    • A resposta de Anton Krouglov repete coisas sobre LinkTypesua resposta à outra pergunta acima.
  • Como faço para visualizar os links físicos de um arquivo no Windows?
    • Respostas de "antonio" e "Massimo" sugerem SysInternals' FindLinks.

Ainda não terminei de testar todos os métodos. Alguma sugestão para seguir esta linha de investigação de forma eficaz para obter uma lista correta de todos os links físicos?

Resumo

  • Re todos os links : Algum comentário sobre minha descoberta que LinkTypenão seja confiável para relatar todos os links NTFS corretamente?
  • Ponto de nova análise : Alguma resposta para as três perguntas indicadas no final dessa seção?
  • Re hard links : Alguma sugestão para obter uma boa listagem?
  • Qualquer outra sabedoria ou insights para compartilhar sobre este estranho mundo de pseudônimos do sistema de arquivos?
symbolic-link hardlink
  • 1 1 respostas
  • 438 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2020-02-20T22:52:34+08:002020-02-20T22:52:34+08:00

    Re hard links: Alguma sugestão para obter uma boa listagem?

    Duvido que os hard links apareçam como um LinkType distinto depois de criados, porque a maneira como eles funcionam é ter vários nomes (entradas de diretório) apontando para o mesmo objeto de arquivo da mesma maneira que o nome original.

    A única maneira de determinar se um arquivo possui hardlinks é verificar sua "contagem de links", como no fsutilscript que você encontrou. Da mesma forma no Linux, POSIX stat() tem o atributo 'nlink' informando o número de links que um arquivo possui (esse é o número que aparece em ls -l).

    No entanto, há muito pouco no NTFS – e nada na maioria dos sistemas de arquivos Unix – que permitiria distinguir um hardlink do original. Você só pode dizer que dois arquivos estão vinculados porque eles apontam para o mesmo 'inode' (bem, o equivalente NTFS de), mas você não saberá qual link foi adicionado posteriormente: é simplesmente um arquivo com dois nomes.

    Os links NTFS são hard links ou pontos de nova análise e os pontos de nova análise são pontos de junção ou links simbólicos

    [...]

    Quais são os 500 objetos que dir /aL diz serem pontos de nova análise, mas são marcados como ou com tamanho de arquivo zero e sem alvos? Os <DIR>objetos são pontos de junção ou links simbólicos ou algo mais? Os arquivos de tamanho zero são links simbólicos ou algo mais? Se são links, para o que são links?

    Nem todos os pontos de nova análise são links. Eles podem ter várias tags neles, e seu objetivo geral é apenas redirecionar a pesquisa de arquivo para algum driver.

    • Por exemplo, o Windows permite que unidades/volumes sejam montados em uma pasta vazia (estilo Unix) em vez de fornecer a eles uma "letra de unidade". Ao contrário dos pontos de montagem do Unix que são transitórios, no entanto, os pontos de montagem do Windows são persistentes no sistema de arquivos - eles são um tipo de ponto de nova análise que armazena o ID do volume montado.

    • Outro uso muito comum de pontos de nova análise é implementar arquivos "nuvem" ou "somente online", como no OneDrive e no Dropbox (ambos os implementam de maneira muito diferente também) - eles aparecem como arquivos regulares que apenas acionam um download online uma vez aberto .

    Se você estiver usando o Microsoft Office instalado de uma certa maneira (não tenho certeza, mas acho que é o Office 365 instalado por meio do ClickOnce), ele parece usar outro tipo de pontos de nova análise, que novamente não são junções nem links simbólicos. Use fsutil reparsepoint querypara ver se você pode encontrar algo interessante.

    Pasta não encontrada: dir retorna "Arquivo não encontrado" e o nome do objeto não se parece com um nome de arquivo com extensão. (No PowerShell, dir produz "Acesso a... negado.")

    Exemplo (objeto de link):dir "C:\Documents and Settings"

    Infelizmente, "Arquivo não encontrado" é como o CMD também relata erros causados ​​devido a restrições de segurança - isso não significa que ele recuperou com sucesso uma lista vazia.

    "Documentos e configurações" é um ponto de junção padrão, apenas possui uma ACL (consulte Recursos icacls) que nega explicitamente a listagem de seu conteúdo. Havia uma postagem antiga no blogs.msdn.com dizendo que isso foi feito para evitar que certos programas que ignoram links verificassem os mesmos diretórios de perfil de usuário duas vezes.

    • 2

relate perguntas

  • O Windows Copy/Move congela quando atinge o arquivo/pasta SYMBOLIC LINK (Symlink-ed)

  • Windows 10: Mova pastas que contêm links simbólicos de diretório entre partições

  • Módulo Ansible para links simbólicos

  • Taxa de transferência de arquivos com links simbólicos no WinSCP

  • tar no windows falha ao extrair o link simbólico do arquivo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve