mkdir -p source/{dir1,dir2}
touch source/a
touch source/dir1/b
touch source/dir2/c
mkdir -p target/dir1
mkdir dir_link
ln -s ../dir_link target/dir2
所以一开始我们有:
tree
├── dir_link
├── source
│ ├── a
│ ├── dir1
│ │ └── b
│ └── dir2
│ └── c
└── target
├── dir1
└── dir2 -> ../dir_link
用:
cp -r source/* target
结果是:
CP:无法用目录"源/目录 2"覆盖非目录"目标/DIR2">
├── dir_link
├── source
│ ├── a
│ ├── dir1
│ │ └── b
│ └── dir2
│ └── c
└── target
├── a
├── dir1
│ └── b
└── dir2 -> ../dir_link
我正在寻找一个命令(cp,rsync(,它可以理解source/dir2/c应该复制到目标/dir2(这是一个dir符号链接(
最接近的是 cp 的-H
选项
-H 遵循源代码中的命令行符号链接
但应用于目标
rsync -avhK source/* target
正确遵循目录符号链接:
├── dir_link
│ └── c
├── source
│ ├── a
│ ├── dir1
│ │ └── b
│ └── dir2
│ └── c
└── target
├── a
├── dir1
│ └── b
└── dir2 -> ../dir_link
更多信息 https://linux.die.net/man/1/rsync -K --copy-dirlinks