使用现有的符号链接将内容递归复制到目标目录

时间:2019-04-02 07:52:54

标签: rsync symlink cp

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

1 个答案:

答案 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

中的更多信息