cp --preserve=links
Aus der Manpage:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Ich persönlich verwende cp -av
für die meisten meiner schweren Kopien. Auf diese Weise kann ich alles erhalten - sogar rekursiv - und die Ausgabe sehen. Das ist natürlich nur eine persönliche Präferenz.
Warum Ihre anderen Optionen nicht das getan haben, was Sie erwartet haben, -s
macht stattdessen einen Link des Kopierens und -L
folgt den Links in der Quelle, um die zu kopierende Datei zu finden, anstatt die Links selbst zu kopieren.
Verwenden Sie, wie in der Manpage angegeben, -P
. Diese Einstellung sagt:
-P, --no-dereference
never follow symbolic links in SOURCE
Wenn die Links relative Pfade enthalten, wird das Kopieren des Links den relativen Pfad nicht anpassen. Verwenden Sie readlink
, mit dem Schalter -f
rekursiv folgen, um den absoluten Pfad des Links zu erhalten. Zum Beispiel:
ln -s $(readlink -f old/dir/oldlink) new/dir/newlink
Wenn Sie die relativen Pfade beibehalten möchten, verwenden Sie die Option -P
von cp
, wie Ignacio Vazquez-Abrams sagte, ist das, was Sie brauchen.