¿Cómo cambiar la unidad en un enlace simbólico?


0

Una de las computadoras se descompuso y he conectado el HD a un adaptador USB para extraer todos los datos del usuario.

La unidad USB se muestra como Unidad G: pero todos los enlaces simbólicos apuntan a la unidad C original: así que cuando copio todos los archivos y sigo los enlaces simbólicos, termino copiando datos de mi propia unidad C:

¿Hay un comando (o forma) para cambiar todos los enlaces simbólicos a otra unidad? Ejemplo, cambiando enlace simbólico. C:\Users\Administrator\fileX.y apuntar a G:\Users\Administrator\fileX.y ¿en lugar?


No. Puede reemplazar los enlaces simbólicos uno por uno, pero solo haría una copia de seguridad de los archivos de la unidad C original y dejaría que la copia no siguiera los enlaces simbólicos.
— LPChip

Solo para aclarar: sus datos residen en la unidad G. Está copiando estos datos en la unidad C. Hay enlaces simbólicos que apuntan a la unidad C, y desea que funcionen correctamente después del trabajo de copia. ¿Es esta la situación o está copiando los datos a una tercera unidad?
— sippybear

Respuestas:


1

No creo que uno pueda modificar un enlace simbólico, solo recrearlo. Esto requerirá escribir un script o programa para escanear el disco y volver a crear Los enlaces simbólicos.

Aquí hay una idea que podría ser más simple: Cree una máquina virtual y configure esta unidad física G: como su disco C :.

Tanto VMware como VirtualBox admiten discos físicos / sin formato:


Bueno, tengo bastante experiencia en la API de Win32 usando C / C ++ y también tuve la idea de escribir un pequeño programa haciendo esto. Solo esperaba que hubiera una herramienta para hacerlo.
— Max Kielland

Lamentablemente no conozco ninguna de esas herramientas. También me gusta la programación, pero en su caso probaría la solución VM, por una razón: no puede destruir el disco debido a un error mío. En cualquier caso, aconsejaría hacer una copia de seguridad de imagen del disco y, si es posible, utilizarlo.
— harrymc

0

En lugar de intentar modificar todos tus enlaces, puedes usar robocopy desde un símbolo del sistema para copiar el enlace simbólico en lugar de su destino.

ROBOCOPY source\path destination\path /E /SL

Este comando copiará recursivamente todos los directorios y archivos desde su origen a su destino ( /E ) y en lugar de copiar el destino de su enlace simbólico, copiará el enlace en sí ( /SL )

Puede enumerar todos sus enlaces simbólicos y objetivos con powershell. Esta responder en StackExchange te muestra cómo.

dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target

Puedes sobrescribir los enlaces existentes también usando powershell.

New-Item -ItemType SymbolicLink -Path "Symbolic\Link\Path" -Target "New\Target\For\Link" -Force

Así que un script para modificar todos los enlaces en una carpeta se vería así:

$directory = 'Path\to\your\links'
$links = dir '$directory' -Force | ?{$_.LinkType}
foreach ($link in $links)  
{
    $target = $link.Target.Replace('C:\','G:\')
    $path = $link.FullName
    New-Item -ItemType SymbolicLink -Path "$path" -Target "$target" -Force
}
dir '$directory' -Force | ?{$_.LinkType} | Format-Table FullName,Target

Asegúrese de modificar la $directory valor y ejecútelo desde un indicador de PowerShell de administración. Puedes agregar el -Recurse bandera a la dir comando para buscar en subcarpetas también.


Sí, pero también necesito copiar el destino del enlace simbólico, ya que la unidad original se destruirá más adelante.
— Max Kielland

@MaxKielland ¿Los datos de los enlaces simbólicos apuntan a existir en la misma unidad que los enlaces simbólicos o están en otra parte?
— sippybear

Sí, el objetivo de todos los enlaces simbólicos es la misma partición física (como C: cuando se usó), pero en mi sistema, como una unidad USB está en G: pero todos los enlaces simbólicos siguen apuntando a C: (no enlaces reales) , pero enlaces absolutos).
— Max Kielland

@MaxKielland Por favor, avíseme si el script funciona.
— sippybear
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.