0

すべてのファイルがシンボリック リンクとしてコピーされる再帰的なディレクトリ構造全体をコピーする最良の方法は何ですか?

つまり、コピーは元のディレクトリのディレクトリ (サブ) 構造全体をミラーリングする必要がありますが、各ファイルは単なるシンボリック リンクにする必要があります。

4

2 に答える 2

1

私は推測します...最初にディレクトリを作成したいと思います...

cd "$source"
find . -type d -exec mkdir -p "$target/{}" \;

次に、シンボリックリンクを作成します...

cd "$source"
find . -type f -print | (
    cd "$target"
    while read one; do
        deep=$(echo "${one:2}" | sed 's:[^/][^/]*:..:g')
        ln -s "${deep:3}/${one:2}" "$(basename "$one")"
    done
)

ファイル名に改行やその他の奇妙な文字がある場合、これは失敗することに注意してください。find -execディレクトリのレベルごとに異なる方法で $deep を計算する必要があるため、これを簡単に解決する方法は思いつきません (つまり、これを a で実行することです)。

また、これは未テストであり、テストする予定はありません。それがあなたにインスピレーションを与えるなら、それは素晴らしいことです。:)

于 2012-09-29T02:59:16.430 に答える
0

これは、シンボリック リンクを作成するソリューションではありませんが、ハード リンクを作成します。

cp -rl $src $dst

短所:

  • ツリーでファイルが置き換えられたかどうかを確認するのが難しくなります
  • 両方のツリーが同じファイルシステム上にある必要があります
于 2012-09-29T03:13:56.540 に答える