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:无法用目录“ source / dir2”覆盖非目录“ target / dir2”
├── dir_link
├── source
│ ├── a
│ ├── dir1
│ │ └── b
│ └── dir2
│ └── c
└── target
├── a
├── dir1
│ └── b
└── dir2 -> ../dir_link
我正在寻找可以理解将source / dir2 / c复制到target / dir2(这是一个dir符号链接)的命令(cp,rsync)
最接近的将是cp的-H
选项
-H跟随SOURCE中的命令行符号链接
但已应用于TARGET
答案 0 :(得分:0)
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