company location

Ahora en SourceForge!

ArchiverFS se agregó recientemente a SourceForge, no dude en visitarnos y dejar una reseña.

 

ArchiverFS - Soporte de largo recorrido

Hogar | Inicio del producto | Precios | Descargar | Documentación | Notas de la versión | Clientes

Soporte de ruta larga y el sistema operativo Windows

Todos hemos estado allí en un momento u otro . " La ruta es más larga que la longitud máxima de ruta admitida por Windows & quot ;, " La ruta es demasiado larga para la papelera de reciclaje " o tal vez si eres desarrollador es un ' System.IO.PathTooLong ' Excepción. Es un mensaje de error que la mayoría de la gente ha encontrado de una forma u otra.

Hay muchos recursos excelentes que explican por qué Windows ha tenido este límite en longitudes de ruta de entre 253 y 260 caracteres (varía según el sistema operativo y la situación), pero veremos qué significa para su usuario promedio hoy y cómo afecta el funcionamiento de ArchiverFS.

Windows 10, Server 2016 y Server 2019 incluyen compatibilidad a nivel de sistema operativo para rutas largas. Este es un gran paso adelante de Microsoft y definitivamente un movimiento en la dirección correcta, al agregar una única clave de registro (o establecer una política de grupo) puede habilitar instantáneamente el soporte para rutas de miles de caracteres. Los pasos para activar el soporte para rutas largas son tan simples como parece:

Política de grupo
  1. Abrir editor de políticas de grupo.
  2. Busque la siguiente sección: Política de equipo local - > Configuración del equipo: > Plantillas administrativas - > Sistema - > Sistema de archivos.
  3. Edite la configuración llamada ' Habilitar Win32 Long Path ' y habilitarlo.
  4. Una vez que sus políticas de grupo se hayan enviado a sus máquinas, se habilitará el soporte de ruta larga a nivel de sistema operativo. La configuración entra en vigor sin que sea necesario reiniciar.
Registry
  1. Abra Regedit y navegue hasta la siguiente tecla: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\FileSystem.
  2. Cree un nuevo valor DWORD llamado ' LongPathsEnabled ' si aún no existe.
  3. Establecer el valor en '1'
  4. La configuración entra en vigor sin que sea necesario reiniciar.

Entonces, eso es todo, solo habilite el soporte de rutas largas en todas sus estaciones de trabajo y servidores y nunca más tendrá que preocuparse por las rutas largas. Bueno . no del todo .

Aunque la adición de soporte a nivel de sistema operativo para rutas largas es bienvenida, es completamente inútil para la gran mayoría de usuarios. Verá, el soporte de ruta larga debe estar habilitado tanto en el nivel de aplicación del SO como en el .

No solo necesita habilitar el soporte a nivel de sistema operativo como se indicó anteriormente, sino que los desarrolladores de la aplicación que está utilizando también deben declarar explícitamente que su aplicación admite rutas largas. Esto se hace en el archivo de manifiesto de la aplicación y deben hacerlo los desarrolladores de la aplicación. El manifiesto de la aplicación está incrustado dentro del archivo .exe para cada aplicación y está fuera de su alcance a menos que tenga el código fuente de la aplicación y esté compilando el .exe usted mismo. La configuración para agregar a un manifiesto de aplicación tiene este aspecto:

<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 sea el desarrollador de la aplicación, no puede editar esa configuración. Además de esto, si está trabajando con una aplicación .Net, el soporte de ruta larga también debe declararse en el archivo .config de la aplicación.

Afortunadamente, esto es bastante fácil de hacer, todas las aplicaciones .Net deberían tener un archivo de configuración que viene con su archivo .exe. El archivo de configuración se ubicará con el archivo .exe y tendrá el mismo nombre pero con la extensión .config. Habilitar el soporte de rutas largas es tan simple como editar la configuración en el archivo de configuración, que debería verse así:

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

ArchiverFS viene configurado listo para tener habilitado el soporte de ruta larga, el archivo de manifiesto de la aplicación incluye el ' reconocimiento de ruta larga ' ajuste y ya está establecido en ' verdadero & # 39 ; Habilitar el soporte de rutas largas es tan simple como habilitarlo en el nivel del sistema operativo y editar el archivo de configuración. Las instrucciones completas que detallan cómo hacer esto se incluyen en la guía del usuario.

Compatibilidad con rutas largas & amp; Explorador de Windows

Entonces, si la compatibilidad con rutas largas es fácil de activar y es compatible con ArchiverFS, cuál es el problema? Por qué lo tenemos desactivado por defecto?

Explorador de Windows, por eso. A pesar de que Microsoft agregó soporte de ruta larga al sistema operativo Windows, no lo han habilitado en el Explorador de Windows, y recuerde que tiene que estar habilitado tanto en el nivel de aplicación del SO como .

Desafortunadamente, no hay forma de habilitar el soporte de ruta larga para el Explorador de Windows, incluso si lo habilita a nivel del sistema operativo, y eso hace que el soporte de ruta larga sea completamente inútil para el 99% de los usuarios. Muy pocas organizaciones, si es que hay alguna, van a sancionar el cambio del Explorador de Windows por una aplicación de administración de archivos que admita rutas largas como Total Commander o Q-Dir en toda la organización.

Hasta que Microsoft brinde a los usuarios una verdadera compatibilidad con rutas largas. en el Explorador de Windows, nuestro consejo es dejarlo desactivado en ArchiverFS. Esto se debe a que ArchiverFS funciona completamente en el nivel del sistema de archivos usando rutas UNC y las rutas pueden extenderse por unos pocos caracteres cuando se convierte de una unidad mapeada (que los usuarios normalmente usan) a una ruta UNC.

Manejo de 0.01 % de archivos con rutas largas sin Soporte Long Path

Lo que se necesita es una forma de acortar la ruta a los archivos sin tener que mover los archivos o cambiar la estructura del directorio en el que se encuentran, y aquí es donde se basa el directorio Los enlaces simbólicos entran. El truco consiste en crear una carpeta de solo lectura bastante arriba en el sistema de archivos que contendrá algunos enlaces simbólicos basados ​​en directorios de elección. Estos enlaces apuntan a lugares más abajo en el sistema de archivos y acortan efectivamente la ruta que ArchiverFS tiene que recorrer para llegar a ellos.

Imaginemos que tiene un recurso compartido llamado 'Share1' en un servidor llamado 'Server1' y contenía muchas rutas que superaban el límite de 260 caracteres de Windows. Vayamos un paso más allá, veamos una ruta de ejemplo a un 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

Eso es más de 300 caracteres y el Explorador de Windows se negaría a abrirlo. Pero, si ejecutamos lo siguiente desde un símbolo del sistema administrativo para crear un enlace simbólico basado en un directorio en un nuevo ' Atajos ' carpeta podemos acortar la ruta efectiva a este archivo:

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

La siguiente ruta ahora estará disponible: “\\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

La nueva ruta tiene poco más de 230 caracteres y siempre que la “\\Server1\Share1\Shortcuts” directorio está dentro del alcance de un trabajo de archivo, este archivo y cualquier otro archivo de ruta larga será descubierto y archivado normalmente.

Con el uso de MKLINK y la creación de una pequeña cantidad de enlaces simbólicos basados ​​en directorios en una carpeta de acceso directo que puede archivar fácilmente todos los archivos antiguos incluso en las estructuras de directorio más obstinadas y complicadas. Estamos vigilando de cerca la situación de soporte de rutas largas para el Explorador de Windows y tan pronto como Microsoft lo habilite (o proporcione una forma de habilitarlo), habilitaremos el soporte de rutas largas en ArchiverFS de forma predeterminada.