Mam drzewo katalogów, które zawiera kilka dowiązań symbolicznych do plików pod /home
... jednak przeniosłem /home
się /mnt/home
i potrzebuję sposobu, aby "ponownie połączyć" wszystkie dowiązania symboliczne. Czy taka funkcjonalność istnieje, czy muszę napisać skrypt, aby to zrobić?
Na przykład mam coś takiego:
[root@trees ~]# ls -l /mnt/home/someone/something
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/e
/mnt/home/someone/something/subdir:
total 4264
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 a -> /home/someone/someotherthing/subdir/a
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 b -> /home/someone/someotherthing/subdir/b
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 c -> /home/someone/someotherthing/subdir/c
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 d -> /home/someone/someotherthing/subdir/d
lrwxrwxrwx 1 jnet www-data 55 2011-08-07 13:50 e -> /home/someone/someotherthing/subdir/e
Chcę polecenia, które znajdzie wszystkie dowiązania symboliczne i połączy się ponownie w tych samych miejscach, ale pod nimi /mnt/home
zamiast/home
Czy takie polecenie istnieje?
źródło
/mnt
ścieżki; nie potrzebujesz bardziej wyszukanej operacji na łańcuchach niż konkatenacja.Wiem, że nie jest to dokładnie to, o co prosi autor, ale wygląda na to, że mają już swoją odpowiedź, więc dodaję to dla innych, takich jak ja, którzy natkną się na pytanie.
Poniższe informacje powinny pomóc, jeśli wymagane jest bardziej elastyczne rozwiązanie, takie jak wiązka zepsutych łączy symbolicznych, które można naprawić, zastępując część elementów docelowych łącza symbolicznego.
na przykład. Po zmianie nazwy użytkownika, aby zastąpić starą nazwę użytkownika nową nazwą użytkownika w miejscu docelowym wielu łączy, po przeprowadzeniu przenoszenia. Utwórz skrypt o nazwie replace-simlinks pokazany poniżej:
i wywołaj go za pomocą następującego polecenia:
Mam nadzieję, że komuś to pomoże
edytuj: Dzięki Gilles za rozpoczęcie tego skryptu i wskazówkę dotyczącą używania skryptu dowiązań symbolicznych, aby linki były względne.
źródło
target=${target/"/home"/"/mnt/home"}
Jednak bardzo pomocne. Dzięki.Utwórz
/home
jako dowiązanie symboliczne/mnt/home
, a wszystkie istniejące dowiązania symboliczne znów będą ważne.źródło