当我将文件从一个目录复制到另一个目录时,目录权限会被重置(例如:从 0755 到 0775),这会导致问题,迫使我返回并手动重置目录权限。我目前正在做cp -r /source/directory /destination/directory
我想复制所有文件和新目录,但不覆盖现有目录的权限。
答案1
添加 -p 标志
cp -pR /source/dir /dest/dir
从man cp
:
-p same as --preserve=mode,ownership,timestamps
答案2
为了保留链接,您可以使用cp
(cp 手册页) 带有-d
标志,这相当于--no-dereference --preserve=links
。
要将其与-p
和-R
标志结合,您可以使用存档标志-a
。
答案3
我的~/.bashrc
已被修改为包含
alias cp='cp -i --preserve=all'
这意味着当我使用时cp
,它还会在覆盖(-i
)之前进行提示,并保留所有内容(即模式、所有权、时间戳;如果可能的话还包括附加属性:上下文、链接、xattr)。
如果您愿意,您可以随时将其更改为mode
而不是all
,但我确实喜欢用这个别名来更改 的默认值cp
。