如何在创建符号文件链接时复制递归目录结构?

时间:2012-09-29 02:29:28

标签: unix directory copy symlink

复制整个递归目录结构的最佳方法是什么,其中所有文件都只是作为符号链接复制?

换句话说,副本应该镜像原始目录的整个目录(子)结构,但每个文件应该只是一个符号链接。

2 个答案:

答案 0 :(得分: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。

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

答案 1 :(得分:0)

这不是制作符号链接的解决方案,但会产生硬链接。

  

cp -rl $ src $ dst

缺点:

  • 很难看到文件是否在树中被替换
  • 两棵树应该在同一个文件系统上