cp --preserve=links
Z manuálové stránky:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Osobně používám cp -av
pro většinu mého těžkého kopírování. Tímto způsobem mohu vše zachovat - dokonce i rekurzivně - a vidět výstup. Samozřejmě je to jen osobní preference.
Proč vaše ostatní možnosti nedělaly to, co jste očekávali, -s
vytvoří odkaz místo toho kopírování a -L
následuje odkazy ve zdroji a najde soubor ke kopírování namísto kopírování samotných odkazů.
Jak říká manuálová stránka, použijte -P
. Toto nastavení říká:
-P, --no-dereference
never follow symbolic links in SOURCE
Pokud odkazy obsahují relativní cesty, zkopírováním odkazu se relativní cesta neupraví. Použijte readlink
, s přepínačem -f
sledovat rekurzivně, abyste získali absolutní cestu odkazu. Například:
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Pokud chcete zachovat relativní cesty, použijte volbu -P
z cp
, jak řekl Ignacio Vazquez-Abrams, je to, co potřebujete.