Копирование Unix (cp) без символических ссылок

Копирование Unix (cp) без символических ссылок

Я хочу скопировать свои файлы, но преобразовать символические ссылки в жесткие ссылки (т.е. фактический файл). Как это сделать?

Вот мой код (он не работает):

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

Связанный контент