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- cp
Implementierung angeht, aber GNU cp
bewahrt 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