cp コマンドはシンボリックリンクを部分的に解決します。

cp コマンドはシンボリックリンクを部分的に解決します。

外部ファイル/ディレクトリへのシンボリックリンクは確認されますが(ターゲットファイルのコピー)内部シンボリックリンク(コピーツリー内のファイルを指す)は、保持されているディレクトリを繰り返しコピーする簡単な方法はありますか?

例:

touch outsidefile
mkdir src
ln -s ../outsidefile src/sym1
touch src/insidefile
ln -s insidefile src/sym2
cp [???] src dest # or other command

望ましい結果:

$ ls dest
 insidefile
 sym1
 sym2 -> insidefile

つまりsym1、シンボリックリンクを維持する一般的なファイルですsym2

答え1

rsync -a --copy-unsafe-links src/ dest

manページから:

--安全でないリンクのコピー

これは、rsync にコピーツリーの外側のシンボリックリンクへの参照をコピーするように指示します。--relativeソースパス自体のすべてのシンボリックリンクと同様に、絶対シンボリックリンクも使用時に通常のファイルとして扱われます。このオプションも指定した場合、追加--copy-linksの効果はありません。

[...]

--links --安全でないリンクのコピー 安全でないすべてのシンボリックリンクをファイルに変換し、すべての安全なシンボリックリンクをコピーします。

関連情報