Behebung eines verlorenen symbolischen Linkstatus

568
James Mann

Ich habe ein paar weiche symbolische Links, die ihren Link-Status verloren haben und normale Dateien enthalten

link TARGET_FILE_LOCATION

Ich suchte ziemlich viel, um einen Weg zu finden, ihren Link-Status wiederherzustellen, konnte aber keinen finden.

1

1 Antwort auf die Frage

0
Aaron Miller

Sie können dies mit einem trivialen Perl-Skript beheben:

#!/usr/bin/perl  use strict; my $progname = $0; $progname =~ s@^.*/@@;  # accept path of bogued "link" file on command line my $file = shift() or die "$progname: usage: $progname <file>\n";  my $content = ''; my $target = '';  # read the bogued file to find out where the symlink should point open my $fh, '<', $file or die "$progname: unable to open $file: $!\n";  # parse the target path out of the file content $content = <$fh>; die "$progname: $file content in bogus format\n" unless $content =~ m@^link (.*)\r?\n$@; $target = $1;  close $fh;  # delete the bogued file unlink $file or die "$progname: unable to unlink $file: $!\n";  # replace it with the correct symlink system('ln', '-s', $target, $file); 

Legen Sie das Skript in einer Datei ab, z. B. fixlink.pl, rufen Sie es als auf perl fixlink.pl /path/to/bogued/symlink. Es liest das Ziel aus der Datei und ersetzt die Datei durch einen Symlink zu diesem Ziel.

Natürlich hilft das nicht, die Ursachen des Problems zu lösen, aber es sollte zumindest das Leben einfacher machen, bis Sie die Ursache herausfinden und beheben konnten.