Как копировать символические ссылки?
У меня есть каталог, содержащий некоторые символические ссылки:
[email protected]:include$ find .. -type l -ls 4737414 0 lrwxrwxrwx 1 user group 13 Dec 9 13:47 ../k0607-lsi6/camac -> ../../include 4737415 0 lrwxrwxrwx 1 user group 14 Dec 9 13:49 ../k0607-lsi6/linux -> ../../../linux 4737417 0 lrwxrwxrwx 1 user group 12 Dec 9 13:57 ../k0607-lsi6/dfc -> ../../../dfc 4737419 0 lrwxrwxrwx 1 user group 17 Dec 9 13:57 ../k0607-lsi6/dfcommon -> ../../../dfcommon 4737420 0 lrwxrwxrwx 1 user group 19 Dec 9 13:57 ../k0607-lsi6/dfcommonxx -> ../../../dfcommonxx 4737421 0 lrwxrwxrwx 1 user group 17 Dec 9 13:57 ../k0607-lsi6/dfcompat -> ../../../dfcompat
Мне нужно скопировать их в текущий каталог. Полученные ссылки должны быть независимы от их прототипов и привести непосредственно к их целевым объектам.
-
cp -s
создает ссылки на ссылки, которые не соответствуют поведению. -
cp -s -L
отказывается копировать ссылки на каталоги -
cp -s -L -r
отказывается копировать относительные ссылки на нерабочий каталог
Что мне делать?
- Как найти все символические ссылки в Windows Vista или 7?
- Ubuntu + последняя версия samba, символические ссылки больше не работают на share, установленном в окнах
- Ubuntu - Создайте ссылку на указанный каталог, чтобы я мог легко перейти на этот каталог
- Простой, простой способ создания символических ссылок в Windows?
- Как найти все ссылки (символические ссылки) в текущем каталоге?
- Не удалось создать символическую связь между терминалом в Mac OS X и Sublime Text 2, чтобы его можно было запустить из командной строки
- Как просмотреть все символические ссылки, точки соединения, жесткие ссылки в папке с помощью dir?
- Как вы создаете символическую ссылку с относительным путем с помощью mklink?
- Как установить короткую ссылку symlink на Sublime Text 3 в терминале?
- Доступ запрещен на mklink
- Сделать символическую ссылку в bash с двумя относительными путями
- Samba Linux - Почему машины окон не отображаются и не следуют символическим ссылкам?
- VIM уничтожает символические ссылки под Windows
cp --preserve=links
На странице man:
--preserve[=ATTR_LIST] preserve the specified attributes (default: mode,owner- ship,timestamps), if possible additional attributes: context, links, xattr, all
Лично я использую cp -av
для большей части моего тяжелого копирования. Таким образом, я могу сохранить все – даже рекурсивно – и увидеть результат. Конечно, это только личное предпочтение.
Что касается того, почему ваши другие варианты не сделали то, что вы ожидали, -s
делает ссылку вместо копирования, а -L
следует за ссылками в источнике, чтобы найти файл для копирования вместо копирования самих ссылок.
Если ссылки содержат относительные пути, то копирование ссылки не будет регулировать относительный путь. Используйте readlink
, с переключателем -f
чтобы следовать рекурсивно, чтобы получить абсолютный путь ссылки. Например:
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Если сохранение относительных путей – это то, что вы хотите, то то, что вам нужно, – это вариант -P
of cp
, как сказал Игнасио Васкес-Абрамс.
Как говорит -P
страница, используйте -P
.