Я хочу скопировать свои файлы, но преобразовать символические ссылки в жесткие ссылки (т.е. фактический файл). Как это сделать?
Вот мой код (он не работает):
cp -RL ${FROM_DIR} ${TO_DIR}
Примечание: это сделано для целей Xcode — символические ссылки в сборке не допускаются.
Спасибо!
РЕДАКТИРОВАТЬ:
Проблема в том, что я сначала удаляю файлы, а не удаляю существующие символические ссылки.
rm -RLf "${FROM_DIR}/*"
решение1
Не уверен насчет cp
реализации в UNIX, но GNU cp
по умолчанию не сохраняет символические ссылки. А жесткие ссылки — это не то же самое, что файлы. По умолчанию cp создает файлы/каталоги из символических ссылок. Вероятно, вам не нужна опция -L для ваших целей. Если вам это действительно нужно, вы можете использовать опцию --no-preserve=links.
Ссылаться на 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