Wie kann man das Laufwerk in einem symbolischen Link ändern?

504
Max Kielland

Einer der Computer war in Rauchschwaden und ich habe die HD an einen USB-Adapter angeschlossen, um alle Benutzerdaten zu extrahieren.

Das USB-Laufwerk wird als Laufwerk G angezeigt: Alle symbolischen Links zeigen jedoch auf das ursprüngliche Laufwerk C: Wenn ich also alle Dateien kopiere und den symbolischen Links folge, kopiere ich die Daten von meinem eigenen Laufwerk C:

Gibt es einen Befehl (oder einen Weg), um alle symbolischen Links auf ein anderes Laufwerk zu ändern? Beispiel Ändern symbolischen Link C:\Users\Administrator\fileX.yPunkt zu G:\Users\Administrator\fileX.ystatt?

0
Sie können die symbolischen Links nacheinander ersetzen, aber ich würde nur die Dateien des ursprünglichen Laufwerks C sichern und die Kopie den symbolischen Links nicht folgen. LPChip vor 5 Jahren 0
Nur zur Verdeutlichung: Ihre Daten befinden sich auf Laufwerk G. Sie kopieren diese Daten auf Laufwerk C. Es gibt symbolische Links, die auf Laufwerk C verweisen, und Sie möchten, dass sie nach dem Kopiervorgang ordnungsgemäß funktionieren. Ist dies die Situation oder kopieren Sie die Daten auf ein 3. Laufwerk? sippybear vor 5 Jahren 0

2 Antworten auf die Frage

1
harrymc

Ich glaube nicht, dass man einen symbolischen Link modifizieren kann, nur neu erstellen kann. Dazu müssen Sie ein Skript oder ein Programm schreiben, um die Festplatte zu scannen und die symbolischen Links neu zu erstellen.

Hier eine Idee, die möglicherweise einfacher ist: Erstellen Sie eine virtuelle Maschine und legen Sie dieses physische Laufwerk G: als Laufwerk C: fest.

Sowohl VMware als auch VirtualBox unterstützen physische / Raw-Festplatten:

Nun, ich bin ziemlich gut in der Win32-API mit C / C ++ und hatte auch die Idee, ein kleines Programm zu schreiben. Ich habe nur gehofft, es würde ein Werkzeug dafür geben. Max Kielland vor 5 Jahren 0
Leider kenne ich kein solches Werkzeug. Ich mag es auch zu programmieren, aber in Ihrem Fall würde ich die VM-Lösung aus einem Grund ausprobieren: Die Festplatte kann aufgrund eines Fehlers nicht zerstört werden. In jedem Fall würde ich raten, ein Abbild-Backup der Festplatte zu erstellen und wenn möglich diese zu verwenden. harrymc vor 5 Jahren 0
0
sippybear

Anstatt zu versuchen, alle Links zu ändern, können Sie robocopyden symbolischen Link von einer Eingabeaufforderung anstelle des Ziels kopieren.

ROBOCOPY source\path destination\path /E /SL 

Dieser Befehl kopiert alle Verzeichnisse und Dateien aus Ihrer Quelle rekursiv an Ihr Ziel ( /E). Statt das Ziel Ihres symbolischen Links zu kopieren, wird der Link selbst kopiert ( /SL).

Sie können alle Ihre symbolischen Links und Ziele mit Powershell auflisten. Diese Antwort auf StackExchange zeigt Ihnen, wie.

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

Sie können vorhandene Links auch mit Powershell überschreiben.

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

Ein Skript zum Modifizieren aller Links in einem Ordner würde also so aussehen:

$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 

$directoryStellen Sie sicher, dass Sie den Wert ändern und diesen über eine Eingabeaufforderung des Administrators ausführen. Sie können das -RecurseFlag zum dirBefehl hinzufügen, um auch in Unterordnern zu suchen.

Ja, aber ich muss auch das symbolische Link-Ziel kopieren, da das ursprüngliche Laufwerk später zerstört wird. Max Kielland vor 5 Jahren 0
@MaxKielland Sind die Daten, auf die die symbolischen Links zeigen, auf demselben Laufwerk wie die symbolischen Links vorhanden, oder sind sie woanders? sippybear vor 5 Jahren 0
Ja, das Ziel aller symbolischen Links ist die gleiche physische Partition (als C: Whne wurde sie verwendet), aber in meinem System als USB-Laufwerk befindet sich dieses Laufwerk auf G: Aber alle symbolischen Links zeigen immer noch auf C: (keine realitve Links) , aber absolute Links). Max Kielland vor 5 Jahren 0
@ MaxKielland Bitte lassen Sie mich wissen, wenn das Skript funktioniert. sippybear vor 5 Jahren 0