%20%D0%B1%D0%B5%D0%B7%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85%20%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA.png)
Я хочу скопировать свои файлы, но преобразовать символические ссылки в жесткие ссылки (т.е. фактический файл). Как это сделать?
Вот мой код (он не работает):
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