在CentOS 7中复制当前文件夹权限至目标文件夹,可通过chmod结合权限值实现,首先使用stat -c "%a" .获取当前文件夹的八进制权限值(如755),再对目标文件夹执行chmod +x 目标文件夹(替换x为获取的权限值),若需递归复制子文件夹权限,添加-R参数即可,即chmod -R +x 目标文件夹,此方法操作简单,能快速同步文件夹权限设置,适用于权限批量复制的场景,确保目标文件夹与当前文件夹权限一致。
在 CentOS 7 系统管理中,有时我们需要将某个文件夹的权限(包括读、写、执行权限,以及所有者、所属组信息)完整复制到另一个文件夹,而不是复制文件内容本身,在部署应用时,可能需要保持目录结构的一致性;或在迁移数据时,需保留原有的权限配置,本文将介绍几种在 CentOS 7 中复制当前文件夹权限的常用方法,涵盖命令行工具的组合使用及具体操作步骤。
场景说明:权限复制的核心需求
文件夹权限在 Linux 中主要由三部分组成:
- 权限位:如
rwx(读、写、执行),对应数字权限(如755)。 - 所有者(Owner):文件所属的用户。
- 所属组(Group):文件所属的用户组。
“复制文件夹权限”即目标文件夹需完全继承源文件夹的上述信息,且通常需要递归处理子文件夹(若需求包含子文件夹权限)。

方法一:使用 find + xargs + chmod + chown(灵活控制)
find 命令用于递归查找文件/文件夹,xargs 将结果传递给其他命令,chmod 修改权限,chown 修改所有者和所属组,此方法可灵活控制是否递归处理子文件夹,适合需要精细控制的场景。
操作步骤
假设当前文件夹为 ./source_dir,目标文件夹为 ./target_dir,需将 source_dir 及其所有子文件夹的权限复制到 target_dir。
复制权限位(递归)
使用 find 获取源文件夹及其子文件夹的权限位,通过 xargs 传递给 chmod,应用到目标文件夹:
# 进入目标文件夹的父目录(假设 source_dir 和 target_dir 同级)
cd /path/to/parent_dir
# 查找 source_dir 及子文件夹,获取权限位并应用到 target_dir
find source_dir -type d -printf "%m %p\n" | xargs -I {} chmod {} target_dir/{}
命令解析:
find source_dir -type d:查找source_dir下的所有文件夹(-type d)。-printf "%m %p\n":以权限位 文件夹路径的格式输出(如755 ./source_dir/subdir)。xargs -I {}:将每行结果替换为 ,传递给后续命令。chmod {} target_dir/{}$:将源文件夹的权限位( 的第一部分)应用到对应的目标文件夹(target_dir/+ 源文件夹路径)。
复制所有者和所属组(递归)
使用 find 获取源文件夹的所有者和所属组,通过 chown 批量修改:
# 获取源文件夹及其子文件夹的所有者:所属组,并应用到目标文件夹
find source_dir -type d -printf "%u:%g %p\n" | xargs -I {} chown {} target_dir/{}
命令解析:
-printf "%u:%g %p\n":输出所有者:所属组 文件夹路径(如root:root ./source_dir/subdir)。chown {} target_dir/{}$:将源文件夹的所有者和所属组应用到对应的目标文件夹。
注意事项
- 若目标文件夹不存在,需先创建:
mkdir -p target_dir。 - 若仅需复制当前文件夹本身的权限(不包含子文件夹),去掉
-type d中的递归查找,直接使用:chmod $(stat -c "%a" source_dir) target_dir chown $(stat -c "%u:%g" source_dir) target_dir
方法二:使用 cpio 命令(保留所有属性)
cpio(Copy In/Out)是 Linux 中用于归档和文件复制的工具,支持通过 --preserve 选项保留权限、所有者、时间戳等属性,此方法适合需要一次性保留所有元数据的场景。
操作步骤
生成源文件夹的属性列表,并应用到目标文件夹
# 进入源文件夹的父目录 cd /path/to/parent_dir # 使用 cpio 复制属性(仅文件夹,不复制文件内容) find source_dir -type d | cpio -pdm --preserve=all target_dir
命令解析:
find source_dir -type d:查找source_dir下的所有文件夹。cpio -pdm:-p:以 pass-through 模式运行,直接复制到目标目录。-d:自动创建目标目录(若不存在)。-m:保留文件的修改时间。--preserve=all:保留所有属性,包括权限、所有者、所属组、时间戳等。
优点与局限
- 优点:命令简洁,可一次性保留所有元数据(权限、所有者、时间戳等)。
- 局限:
cpio默认会复制文件内容,但通过-type d限制为文件夹后,仅会复制文件夹结构及属性,不会复制文件内容,适合仅需权限的场景。
方法三:使用 rsync 命令(高效同步属性)
rsync 是 Linux 中常用的文件同步工具,通过 -a(归档模式)或 -p 选项可保留权限、所有者等属性,适合大文件夹或需要高效同步的场景。

