cp 带权限复制

举报
yd_293661582 发表于 2026/11/11 08:33:38 2026/11/11
【摘要】 在 Linux 里用 cp 带权限复制,核心就是加 -p 或 -a 参数‌。不加参数时,目标文件权限会按 umask 重新计算,比如原本 755 的脚本复制后可能变成 644,导致执行时报权限不足。‌‌📋 常用参数‌-p(保留基础属性)‌:保留权限、属主和时间戳。适合复制单个文件或脚本,如 cp -p deploy。sh /opt/backup/。‌-a(归档模式,推荐)‌:等于 -dR ...

在 Linux 里用 cp 带权限复制,核心就是加 -p 或 -a 参数‌。不加参数时,目标文件权限会按 umask 重新计算,比如原本 755 的脚本复制后可能变成 644,导致执行时报权限不足。‌‌

📋 常用参数
‌-p(保留基础属性)‌:保留权限、属主和时间戳。适合复制单个文件或脚本,如 cp -p deploy。sh /opt/backup/。
‌-a(归档模式,推荐)‌:等于 -dR --preserve=all,递归复制目录、保留权限/属主/时间戳/符号链接/扩展属性/SELinux 上下文,还不破坏硬链接关系。备份或迁移目录时用它最稳,如 cp -a /srv/app/ /backup/app/。
‌-r(仅递归)‌:只递归复制目录结构,‌不保留权限‌,目标文件权限按 umask 重建。用 cp -r 复制目录时,子文件权限可能全变,需留意。‌‌
🆚 -p 和 -a 怎么选
表格
场景 推荐 原因
复制单个文件,只关心权限和时间戳 -p 更轻量,够用
复制整个目录、备份或迁移 -a 一次搞定递归+全部属性,避免遗漏
复制含符号链接的目录 -a 保留链接本身,不展开成目标文件
上线可执行文件 cp -p 或 rm && mv 避免权限丢失导致服务启动失败
⚠️ 注意事项
‌保留属主需要 root‌:普通用户执行 cp -p 或 -a 时,属主可能变成当前用户,只有 root 才能完整保留原属主。
‌ACL 和扩展属性‌:若文件系统有 ACL 或 SELinux 上下文,cp -a 能带上;但目标分区挂载需支持 ACL,否则会报 Operation not supported。
‌复制目录时目标已存在‌:cp -a /srv/app/ /backup/app/ 若 /backup/app/ 已存在,结果会是 /backup/app/app/,脚本里易踩坑。
‌生产环境 SELinux‌:复制系统目录时可能需调整 SELinux 上下文,否则提示权限不足。‌‌

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。