Unix-Kopie (cp) ohne symbolische Links

Unix-Kopie (cp) ohne symbolische Links

Ich möchte meine Dateien kopieren, aber die symbolischen Links in Hardlinks (also die eigentliche Datei) umwandeln. Wie kann ich das tun?

Hier ist mein Code (der nicht funktioniert):

cp -RL ${FROM_DIR} ${TO_DIR}

Hinweis: Dies dient Xcode-Zwecken – symbolische Links sind in einem Build nicht zulässig.

Danke!

BEARBEITEN:

Das Problem liegt in der Art und Weise, wie ich die Dateien zuerst entferne – vorhandene symbolische Links werden nicht entfernt.

rm -RLf "${FROM_DIR}/*"

Antwort1

Ich bin mir nicht sicher, was die UNIX- cpImplementierung angeht, aber GNU cpbewahrt standardmäßig keine symbolischen Links auf. Und Hardlinks sind nicht dasselbe wie Dateien. Standardmäßig erstellt cp Dateien/Verzeichnisse aus symbolischen Links. Wahrscheinlich brauchen Sie die Option -L für Ihre Zwecke nicht. Wenn Sie das wirklich brauchen, können Sie die Option --no-preserve=links verwenden.

Beziehen auf man cp:

   --preserve[=ATTR_LIST]
          preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all

   --no-preserve=ATTR_LIST
          don't preserve the specified attributes

verwandte Informationen