シンボリックリンクなしの Unix コピー (cp)

シンボリックリンクなしの Unix コピー (cp)

ファイルをコピーしたいのですが、シンボリック リンクをハード リンク (つまり、実際のファイル) に変換する必要があります。どうすればいいでしょうか?

これが私のコードです(動作しません):

cp -RL ${FROM_DIR} ${TO_DIR}

注意: これは Xcode の目的のためであり、ビルドではシンボリック リンクは許可されません。

ありがとう!

編集:

問題は、最初にファイルを削除する方法にあります。既存のシンボリックリンクは削除されません。

rm -RLf "${FROM_DIR}/*"

答え1

UNIX の実装についてはよく分かりませんcpが、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

関連情報