复制整个递归目录结构的最佳方法是什么,其中所有文件都只是作为符号链接复制?
换句话说,副本应该镜像原始目录的整个目录(子)结构,但每个文件应该只是一个符号链接。
答案 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