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
)

请注意,如果您的文件名中有换行符或其他奇怪的字符,这将失败。我想不出一个快速的方法来解决这个问题(我的意思是在 a 中执行此find -exec操作),因为您需要为每个目录级别以不同的方式计算 $deep 。

此外,这是未经测试的,我不打算测试它。如果它能给你灵感,那就太好了。:)

于 2012-09-29T02:59:16.430 回答
0

这不是建立符号链接的解决方案,但它会建立硬链接。

cp -rl $src $dst

缺点:

  • 更难查看文件是否在树中被替换
  • 两棵树应该在同一个文件系统上
于 2012-09-29T03:13:56.540 回答