¿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?

Max Kielland
fuente
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:

harrymc
fuente
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.

sippybear
fuente
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