需要rsync功能 - 但我需要符号链接,而不是副本


4

有没有办法执行rsync所做的事情(将许多目录编译成单个目录) - 但是我不需要复制文件/子目录,而是创建一个带符号链接指向原始文件/子目录的目录。

Answers:


4

你的问题很模糊。

cp -l "$SRCDIR"/* "$DESTDIR"

find "$SRCDIR" -mindepth 1 \( -type d -printf 'mkdir "$DESTDIR/%P"\n' \) -o \
  \( -printf 'cp -l "%p" "$DESTDIR/%P"\n' \) | DESTDIR="$DESTDIR" bash

第一个直接在各个项目中创建符号链接$SRCDIR。第二个重新创建目录结构并为非目录创建符号链接。


还要注意cp -l制作硬链接,而cp -s制作符号链接。如果树很大而第二个选项最终变得缓慢,那么它也可以通过以下方式实现:for i in $(cd srcdir; find . -mindepth 1 -type d -printf '"%p" '); do mkdir -p "dstdir/${i}"; cp -l $(find "srcdir/${i}" -maxdepth 1 -not -type d -printf '"%p" ') "dstdir/${i}"
Brian Vandenberg

我遗漏了两件事:1)cp -s如果复制到同一目录只能做相对的符号链接,2)cp我的修改中的命令需要一个eval
Brian Vandenberg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.