You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UNIX无root权限下复制文件夹并保留所有者与权限?

解决方案

核心原因是普通用户没有修改文件所有者的权限:cp -a/cp -p只能保留自己拥有的文件的所有者和权限,复制他人文件时,新文件的所有者会强制变为当前操作的用户——只有root能跨用户保留所有者信息。

结合你只能用user1和user2身份操作的情况,分两步处理即可:

1. 以user1身份复制所有属于user1的文件/目录

用rsync按用户筛选同步,或者find+cp组合,确保保留所有者和权限:

方法A:rsync(更简洁)

rsync -av --filter="user,user1" /path/to/source/a/ /path/to/target/b/

--filter="user,user1"会只同步源目录中属于user1的内容,-av参数保留权限、时间戳等元信息,且因为是user1操作自己的文件,同步后目标文件的所有者仍为user1。

方法B:find+cp(兼容无rsync的环境)

find /path/to/source/a -user user1 -exec cp -a {} /path/to/target/b/{} \;

注意:如果源路径是绝对路径,目标路径需要确保目录结构一致,或者调整为find /path/to/source/a -user user1 -exec cp -a {} /path/to/target/b/$(dirname {}) \;来自动创建对应子目录(部分系统需微调语法)。

2. 以user2身份复制所有属于user2的文件/目录

重复类似操作,覆盖目标目录中对应位置的内容(确保user2的文件保留自身所有者和权限):

方法A:rsync

rsync -av --filter="user,user2" /path/to/source/a/ /path/to/target/b/

方法B:find+cp

find /path/to/source/a -user user2 -exec cp -a {} /path/to/target/b/{} \;

注意事项

  • 确保user1和user2互相拥有对对方文件的读取权限,否则无法复制对方的内容。
  • 源目录a本身属于user1,第一步user1的操作已同步目录结构并保留所有者,无需额外处理。

内容的提问来源于stack exchange,提问作者user1508682

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:35:14