Я уже писал в этой теме форума
об экстремальном восстановлении симлинков. Оно понадобилась мне, когда я перенес файловую систему под другого юзера. Симлинки отказались работать, т.к. домашний каталог, прописанный в симлинках, назывался по другому. Тогда мне удалось это выполнить, перезаписав симлинки так:
1. в терминале смотрим битые ссылки:
find /home/andrey/ -type l | while read f; do if [ ! -e "$f" ]; then ls -l "$f"; fi; done
2. меняем битые ссылки на нормальные :
find /home/user/ -type l -lname '/home/andrey/*' -printf 'ln -nsf "$(readlink "%p" | sed s/andrey/user/)" "$(echo "%p" | sed s/andrey/user/)"\n' > script.sh
...в папке /home/user/ у меня появился файл script.sh
3. Даем скрипту права на выполнение, потом - выполняем.
4. Всё. Ссылки поменялись.
----------------------------
Но иногда бывает так, что в одной и той же системе по разным причинам появляются
битые симлинки.
В этом случае поможет утилита symlinks
отсюда Скачав
архив с утилитой, распаковываем его и заходим туда. В терминале:
./configure
make
make install
Терминал немного ругнётся, но обращать внимание на это не надо. В папке появятся бинарник под названием symlinks, ему надо дать права на выполнение и скопировать в /sbin:
sudo chmod 777 ./symlinks && sudo cp ./symlinks /sbin/
Основные ключи утилиты symlinks для работы по схеме symlinks [ключ] [папка]:
-c == изменить абсолютные / битые ссылки на относительные
-d == удалить оборванные ссылки
-o == предупреждать о ссылках в файловых системах
-r == рекурсировать в подкаталоги
-s == сокращать длинные ссылки (отображается в выходных данных, только если -c не указан)
-t == показать, что будет сделано с помощью -c
-v == подробный (показать все символические ссылки)
Сделав:
symlinks -rc наша/любая/директория
получим исправление симлинков рекурсивно во всех подкаталогах этой директории
Предварительно посмотреть симлинки можно командой:
symlinks -rv наша/любая/директория
Очень просто и удобно.
Надеюсь, что был полезен. Искренне ваш, el guahiro.