AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 58277
Accepted
yawniek
yawniek
Asked: 2009-08-25 22:59:07 +0800 CST2009-08-25 22:59:07 +0800 CST 2009-08-25 22:59:07 +0800 CST

将权限复制到 linux / unix 上的相同树

  • 772

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

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

filesystems permissions copy file-permissions
  • 7 7 个回答
  • 21376 Views

7 个回答

  • Voted
  1. marlar
    2010-02-27T05:05:27+08:002010-02-27T05:05:27+08:00

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

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

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

    然后转到目的地上方的一级并使用以下命令恢复权限

    setfacl --restore=/root/perms.acl
    

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

    应该以root身份完成。

    • 34
  2. Dom
    2009-08-25T23:28:17+08:002009-08-25T23:28:17+08:00

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

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

    • 14
  3. Zoredache
    2009-08-25T23:34:51+08:002009-08-25T23:34:51+08:00

    您可以做的一件事是使用find命令构建一个脚本,其中包含复制权限所需的命令。这是一个简单的示例,您可以使用各种 printf 选项做更多事情,包括获取所有者、组 ID 等。

    $ find /var/log -type d -printf "chmod %m %p \n" > reset_perms
    $ cat reset_perms
    chmod 755 /var/log
    chmod 755 /var/log/apt
    chmod 750 /var/log/apache2
    chmod 755 /var/log/fsck
    chmod 755 /var/log/gdm
    chmod 755 /var/log/cups
    chmod 2750 /var/log/exim4
    ...
    
    • 12
  4. Best Answer
    drAlberT
    2009-08-26T00:10:12+08:002009-08-26T00:10:12+08:00

    可以使用以下 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 变量设置正确的值,将它们指向源目录和目标目录,运行并且目录将具有同步的权限。

    • 8
  5. Thomas
    2009-08-26T00:28:44+08:002009-08-26T00:28:44+08:00

    两种方式:

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

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

    编辑:对不起,我看错了。不是你问的。

    • 0
  6. Mei
    2009-08-26T01:14:38+08:002009-08-26T01:14:38+08:00

    我想我会写一个 perl 脚本来做到这一点。就像是:

    #!/usr/bin/perl -nw
    
    my $dir = $_;
    my $mode = stat($dir)[2];
    my $pathfix = "/some/path/to/fix/";
    chmod $mode, $pathfix . $dir;
    

    然后做这样的事情:

    cd /some/old/orig/path/ ; find . -type d | perlscript
    

    我在脑海中写下了这个,还没有经过测试;所以在让它猖獗之前检查一下。这只修复了现有目录的权限;它不会更改文件的权限,也不会创建丢失的目录。

    • 0
  7. Ikem Krueger
    2014-07-24T15:46:30+08:002014-07-24T15:46:30+08:00

    我想出了这个:

    find $SOURCE -mindepth 1 -printf 'chmod --reference=%p\t%p\n'|sed "s/\t$SOURCE/ $DEST/g"|sh
    

    它不是完全防弹的,但可以满足我的需要。

    • 0

相关问题

  • 我如何知道 AIX 中磁盘上的文件系统是什么?

  • 控制 UNIX 目录内容用户组所有权

  • 在 Ubuntu 上将 Windows 磁盘分区与 Linux 分区合并

  • 在 VMPlayer 上 Windows 和 Linux 之间共享目录的最佳方式

  • md5sum 重复为同一台机器上的同一文件提供不同的校验和

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve