将权限复制到 Linux / Unix 上的相同树

将权限复制到 Linux / Unix 上的相同树

我有一个具有正确权限的文件树。然后我有一个(文件)相同的树(具有不同的文件内容)但具有错误的权限。

我如何将权限布局从一棵树转移到另一棵树?

答案1

可以使用以下 shell 行来完成:

D1=foo; D2=foo2; for entry in $(find $D1  -exec stat -f "%N:%Mp%Lp" {} \;); do $(echo $entry | sed 's#'$D1'#'$D2'#' | awk -F: '{printf ("chmod %s %s\n", $2, $1)}') ; done

只需为 D1 和 D2 变量设置正确的值,将它们指向源目录和目标目录,运行,目录就会同步具有权限。

答案2

我刚刚学到了一种新的、简单的方法来实现这一点:

getfacl -R /path/to/source > /root/perms.acl

这将生成一个包含所有权限和所有权的列表。

然后进入下一级多于目的地并恢复权限

setfacl --restore=/root/perms.acl

您必须高出一级的原因是 perms.acl 中的所有路径都是相对的。

应以 root 身份完成。

答案3

如果你有源和目标,你可以将你的权限同步到 rsync -ar --perms source/ dest

它不会传输数据,只是传输权限......

答案4

两种方式:

  1. 如果它适用于您的 UNIX 品牌:cp -ax /src /dest
  2. 如果没有,这是便携版本:(cd /src && tar cpf - .)|(cd /dst && tar xpf -)

(后一种情况下 /dst 必须存在)

编辑:抱歉,我看错了。不是你问的。

相关内容