company location

Agora no SourceForge!

O ArchiverFS foi adicionado recentemente ao SourceForge, sinta-se à vontade para acessar e deixar uma avaliação.

 

ArchiverFS - Long Path Suport

Casa | Página inicial do produto | Preços | Baixar | Documentação | Notas de versão | Clientes

Suporte de longo caminho e sistema operacional Windows

Todos nós já estivemos lá em um ponto ou outro .. & quot; O caminho é mais longo do que o comprimento máximo de caminho suportado pelo Windows & quot ;, & quot; O caminho é muito longo para a lixeira & quot; ou talvez, se você for um desenvolvedor, seja um ' System.IO.PathTooLong ' Exceção. É uma mensagem de erro que a maioria das pessoas encontrou de uma forma ou de outra.

Existem muitos recursos excelentes que explicam por que o Windows tem esse limite de comprimento de caminho entre 253 e 260 caracteres ( varia de acordo com o sistema operacional e a situação), mas vamos ver o que isso significa para o usuário médio hoje e como isso afeta a operação do ArchiverFS.

Windows 10, Server 2016 e Server 2019 incluem suporte de nível de sistema operacional para caminhos longos. Este é um grande passo em frente da Microsoft e definitivamente um movimento na direção certa, ao adicionar uma única chave de registro (ou definir uma política de grupo), você pode ativar instantaneamente o suporte para caminhos com milhares de caracteres. As etapas para ativar o suporte para caminhos longos são as mais simples possíveis:

Política de grupo
  1. Abra o Editor de política de grupo.
  2. Encontre o seguinte seção: Política do computador local - > Configuração do computador - > Modelos administrativos - > Sistema - > Sistema de arquivos.
  3. Edite a configuração chamada ' Ativar Win32 Long Path ' e habilite-o.
  4. Uma vez que suas Políticas de Grupo tenham sido enviadas para suas máquinas, o suporte a caminhos longos de nível de sistema operacional será habilitado. A configuração entra em vigor sem a necessidade de reinicializar.
Registro
  1. Abra o Regedit e navegue até a seguinte chave:   HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet \ Control \ FileSystem.
  2. Crie um novo valor DWORD denominado ' LongPathsEnabled ' se ainda não existir.
  3. Defina o valor como '1'.
  4. A configuração entra em vigor sem a necessidade de reinicialização.

Então é isso, basta habilitar o suporte a caminhos longos em todas as suas estações de trabalho e servidores e você nunca mais precisará se preocupar com caminhos longos? Bem ... não exatamente ...

Embora a adição de suporte ao nível do sistema operacional para caminhos longos seja bem-vinda, é completamente inútil para a grande maioria dos usuários. Veja, o suporte de longo caminho deve ser habilitado tanto no nível do sistema operacional quanto no nível do aplicativo .

Não apenas você precisa habilitar o suporte no nível do sistema operacional como acima, mas também para os desenvolvedores do aplicativo que você está usando também deve declarar explicitamente que o aplicativo oferece suporte a caminhos longos. Isso é feito no arquivo de manifesto do aplicativo e deve ser feito pelos desenvolvedores do aplicativo. O manifesto do aplicativo está incorporado ao arquivo .exe de cada aplicativo e está fora de alcance, a menos que você tenha o código-fonte do aplicativo e esteja compilando o .exe você mesmo. A configuração para adicionar a um manifesto de aplicativo é assim:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
        <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
    </windowsSettings>
</application> 

A menos que você seja o desenvolvedor do aplicativo, não pode editar essa configuração. Além disso, se você estiver trabalhando com um aplicativo .Net, o suporte de caminho longo também deve ser declarado no arquivo .config do aplicativo.

Felizmente, isso é bastante fácil de fazer, todo aplicativo .Net deve ter um arquivo de configuração que vem com o arquivo .exe. O arquivo de configuração estará localizado com o arquivo .exe e terá o mesmo nome, mas com uma extensão .config. Ativar o suporte a caminhos longos é tão simples quanto editar as configurações no arquivo de configuração, que deve ser semelhante a:

< runtime >
< AppContextSwitchOverrides value = "Switch.System.IO.UseLegacyPathHandling = false; Switch.System.IO.BlockLongPaths = false" / >
< / runtime >

ArchiverFS vem configurado pronto para ter o suporte de caminho longo habilitado, o arquivo de manifesto do aplicativo inclui o arquivo ' reconhecimento de caminho longo ' configuração e já está definido como ' true & # 39 ;. Ativar o suporte a caminhos longos é tão simples quanto ativá-lo no nível do sistema operacional e editar o arquivo de configuração. Instruções completas detalhando como fazer isso estão incluídas no guia do usuário.

Suporte & de caminho longo; Windows Explorer

Então, se o suporte a caminhos longos é fácil de ativar e é compatível com o ArchiverFS, qual é o problema? Por que ele está desativado por padrão?

Windows Explorer, é por isso. Apesar de a Microsoft adicionar suporte de caminho longo ao sistema operacional Windows, ela não o habilitou no Windows Explorer e lembre-se de que ele deve ser habilitado tanto no nível do sistema operacional quanto no do aplicativo.

Infelizmente, não há como habilitar o suporte a caminhos longos para o Windows Explorer, mesmo se você habilitá-lo no nível do sistema operacional, e isso torna o suporte a caminhos longos completamente inútil para 99% dos usuários. Muito poucas organizações irão sancionar a troca do Windows Explorer por um aplicativo gerenciador de arquivos que ofereça suporte a caminhos longos como Total Commander ou Q-Dir em toda a organização.

Até que a Microsoft forneça aos usuários um suporte verdadeiro de longo caminho no Windows Explorer, nosso conselho é deixá-lo desabilitado no ArchiverFS. Isso ocorre porque o ArchiverFS funciona inteiramente no nível do sistema de arquivos usando caminhos UNC e os caminhos podem ser estendidos por alguns caracteres ao converter de uma unidade mapeada (que os usuários normalmente usam) para um caminho UNC.

Lidando com 0,01 % de arquivos com caminhos longos sem Suporte de caminho longo

O que é necessário é uma maneira de encurtar o caminho para os arquivos sem ter que movê-los ou alterar a estrutura de diretório em que estão, e é aqui que entram os links simbólicos baseados em diretório. O truque é criar uma pasta somente leitura relativamente alta no sistema de arquivos que conterá alguns links simbólicos baseados em diretórios de escolha. Esses links apontam para lugares mais abaixo no sistema de arquivos e encurtam efetivamente o caminho que o ArchiverFS tem que percorrer para alcançá-los.

Vamos imaginar que você tenha um compartilhamento chamado 'Share1' em um servidor chamado 'Server1' e ele continha muitos caminhos que ultrapassavam o limite de 260 caracteres do Windows. Vamos dar um passo adiante, vamos ver um exemplo de caminho para um documento:

\\Server1\Share1\Sales Departments\Regional Figures\North East\Pre Office Move 2006\Regional Subsectors\Central\Jills Annual Reports For Review\Draft Documents Prepared Onsite 2002-08-10\Cost Center Breakdown Of All Expenses By Resource Type\Spreadsheet RAW Data\New York 2002 Q1\Sector Breakdown.xlsx

Isso tem mais de 300 caracteres e o Windows Explorer se recusaria a abri-lo. Mas, se executarmos o seguinte em um prompt de comando administrativo para criar um link simbólico baseado em diretório em um novo ' Atalhos ' pasta, podemos encurtar o caminho efetivo para este arquivo:

MKLINK /D “\\Server1\Share1\Shortcuts\Old Sales Data” “\\Server1\Share1\Sales Departments\Regional Figures\North East\Pre Office Move 2006\Regional Subsectors\Central”

O seguinte caminho agora estará disponível: “\\Server1\Share1\Shortcuts\Old Sales Data\Jills Annual Reports For Review\Draft Documents Prepared Onsite 2002-08-10\Cost Center Breakdown Of All Expenses By Resource Type\Spreadsheet RAW Data\New York 2002 Q1\Sector Breakdown.xlsx

O novo caminho tem pouco mais de 230 caracteres e, desde que o diretório “\\ Server1 \ Share1 \ Shortcuts” esteja dentro do escopo de um trabalho de arquivamento, este arquivo e quaisquer outros arquivos de caminho longo serão descobertos e arquivados normalmente.

Com o uso de MKLINK e a criação de um pequeno número de links simbólicos baseados em diretório em uma pasta de atalho, você pode arquivar facilmente cada arquivo antigo, mesmo nas estruturas de diretório mais teimosas e complicadas. Estamos de olho na situação do suporte de longo caminho para o Windows Explorer e assim que a Microsoft o habilitar (ou fornecer uma maneira de habilitá-lo), habilitaremos o suporte de longo caminho no ArchiverFS por padrão.