我想从以下位置复制目录:
path1/dir1
到
path2/dir2
我第一次调用
cp -r path1/dir1 path2/dir2
没问题,dir2是在path2下创建的
ls path2/dir2
bu 第二次,dir1 是在 path2/dir2 下创建的
ls path2/dir2/dir1
我可以仅使用获得正确的行为吗cp
? (= 不调用rm -f path2/dir2
)
答案1
使用-T
cp (GNU cp
) 选项:
cp -rT path2/dir2 path1/dir1
如果您rsync
为此使用(这可能是您想要的,因为它将避免复制未更改的文件),您可以将 a 附加/
到源目录,以便专门复制内容而不是目录本身。例如:
rsync -r path1/dir1/ path2/dir2
答案2
将目录“复制”到已存在的目标时,您想要的行为是不明确的。你想要_____吗
- 只添加新文件?
- 添加新文件并更新内容已更改的文件?
- 添加和更新文件,以及删除目标上已从源中删除的文件?
基本上,您认为的简单复制操作实际上要复杂得多——对于cp
.在所有情况下,您都希望使用该rsync
命令。