Corrigindo status de link simbólico perdido [fechado]

1

Eu tenho um par de links simbólicos que perderam o status do link e se tornaram arquivos normais contendo

link TARGET_FILE_LOCATION

Pesquisei bastante para encontrar uma maneira de restaurar o status do link, mas não consegui encontrar nenhum.

    
por James Mann 13.11.2013 / 00:20

1 resposta

0

Você pode corrigir isso com um script Perl trivial:

#!/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);

Solte o script em um arquivo, por exemplo fixlink.pl, invoque-o como perl fixlink.pl /path/to/bogued/symlink e ele lerá o destino fora do arquivo e, em seguida, substituirá o arquivo por um link simbólico para esse destino.

Naturalmente, isso não faz nada para resolver o que realmente está causando o problema, mas deve, pelo menos, tornar a vida mais simples até que você consiga descobrir a causa e corrigi-la.

    
por 13.11.2013 / 00:57