代码之家  ›  专栏  ›  技术社区  ›  kittygirl

如何排除`.git`然后备份和还原文件夹和文件的所有者和权限?

  •  1
  • kittygirl  · 技术社区  · 6 年前

    我喜欢用bash脚本 ,因为 getfacl,setfacl 有大问题(bug)。

    在我问这个问题之前,我也在寻找一种纯粹的 bash 备份和还原的脚本 owner and permission .可惜没有人承认答案是完美的。

    然后我使用一种简单的方法来备份和恢复所有者和权限:

    getfacl -R . >permissions.facl
    setfacl --restore=permissions.facl
    

    如果我想排除 .git . 怎么办?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Raja G    6 年前

    是的,你可以。

    例如,我的目录看起来像

    [root@967dd7743677 test]# ls -la
    total 20
    drwxr-xr-x 4 root root 4096 Jan 11 06:37 .
    drwxr-xr-x 1 root root 4096 Jan  2 11:08 ..
    drwxr-xr-x 8 root root 4096 Jan  2 12:56 .git
    drwxr-xr-x 2 root root 4096 Jan 11 06:37 1one
    -rw-r--r-- 1 root root   19 Jan  2 12:55 testfile
    [root@967dd7743677 test]#
    

    通过使用 find 可以排除所需的任何目录

    find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \;
    

    所以通过 -exec 我们在呼唤 getfacl -R .

    你可以重新定向输出

    find . -type f -not -path '*/\.git/*' -exec getfacl -R {} \; > permissions.facl
    

    希望它有帮助。