Archivos con nombres largos

Archivos con nombres largos, restaurarlos de una copia VSS

Archivos con nombres largos, como restaurarlos de una copia de seguridad VSS

En esta entrada trataré un problema que me surgió hace algún tiempo, y no es más que restaurar una copia de seguridad VSS que tiene archivos con nombres largos, de más de 260 caracteres (limitación de Windows que próximamente publicaré una entrada de como quitar esta limitación en windows 10).

La solución más cotidiana al problema de los archivos de más de 260 caracteres, consiste en crear una unidad de red a la carpeta raíz de dicho archivo para poder copiarlo, pero en este caso, dicho archivo proviene de una copia de seguridad VSS (https://en.wikipedia.org/wiki/Shadow_Copy) como la que configuramos en la entrada Versiones anteriores de archivos y este proceso se convierte en una verdadera hazaña.

En este caso opté por usar las herramientas DiskShadow y MkLink que aunque son herramientas que normalmente se usan en Windows Server, funcionan perfectamente con Windows 7.

Nota: DiskShadow lo puedes descargar aquí

Voy a guiaros a la hora de usarlo:

Lo primero que he hecho es crear una carpeta en c: llamada tmp y en ella he copiado los archivos extraídos de la descarga

archivos con nombres largos

A continuación vamos a ver cuántos snapshots tenemos creados y volcamos toda esa información en un archivo de texto para procesarlo luego. Para ello, abrimos una consola de windows con permisos de administrador y nos situamos en dicha carpeta, y escribiremos

C:\tmp>diskshadow /l listado.txt
DISKSHADOW> list shadows all
DISKSHADOW> exit
  • Archivos con nombres largos diskshadow1
  • Archivos con nombres largos diskshadow2

En este ejemplo tenemos disponibles 10 snapshots. Abrimos el fichero listado.txt generado y aquí se nos muestran los 10 snapshosts, os pongo un ejemplo de uno de ellos:

* Shadow copy ID = {bf92600c-7c79-48c1-9f2c-63f448e64bec} <No Alias>
 - Shadow copy set: {53513de7-1e9f-43a9-b630-13ac88d93e53} <No Alias>
 - Original count of shadow copies = 1
 - Original volume name: \\?\Volume{8363531a-4223-11e6-92ae-806e6f6e6963}\ [C:\]
 - Creation time: 05/07/2016 18:00:29
 - Shadow copy device name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
 - Originating machine: ************-PC
 - Service machine: ***********-PC
 - Not exposed
 - Provider ID: {b5946137-7b9f-4925-af80-51abd60b20d5}
 - Attributes: No_Auto_Release Persistent Client_accessible Differential

Localizamos el snapshot del cual queremos extraer la copia y copiamos su «Shadow copy device name», en el ejemplo anterior sería:

\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1

El siguiente paso es crear un enlace simbólico a esta ruta para poder tener una ruta «más corta» a ese archivo, para ello volvemos a la consola y escribimos

C:\tmp>mklink /d c:\tmp\a \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

Importante: Hay que poner una última barra «\» al final de la sentencia, sino no funciona.

  • mklink /d crea el enlace simbólico en la carpeta c:\tmp\a (o cualquier otro nombre) de la ruta \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

Archivos con nombres largos mklink

Ya tenemos «montada» la ruta simbólica del volumen «\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1″ en el directorio «a» y podemos proceder al copiado de los archivos necesarios usando por ejemplo robocopy para evitar la limitación de 260 caracteres.

Una vez terminado el proceso, eliminamos el enlace simbólico escribiendo en la consola

c:\tmp> rmdir c:\temp\a

En próximas entradas veremos más a fondo los comandos de robocoy para hacer copias de seguridad.