【问题标题】:How to improve performance of changing files and folders permissions?如何提高更改文件和文件夹权限的性能?
【发布时间】:2015-08-16 01:12:20
【问题描述】:

我将我的工作项目权限设置为:

  • 所有目录为 755
  • 所有文件为 644

我通过运行下一个命令来做到这一点:

$ find /path/to/project -type d -exec chmod 0755 {};

$ find /path/to/project -type f -exec chmod 0644 {};

它运行良好,但有点缓慢,尤其是在虚拟机上。

我能否以任何其他方式提高此任务的性能?

【问题讨论】:

    标签: linux ubuntu permissions find chmod


    【解决方案1】:

    参考 - [https://superuser.com/questions/91935/how-to-chmod-all-directories-except-files-recursively][1]

    1.这里消耗的大部分时间将用于为每个条目加载 chmod 进程。为了避免使用 xargs-

         find /path/to/project -type d -print0 | xargs -0 chmod 755 
         find /path/to/project -type f -print0 | xargs -0 chmod 644
    

    2.幸运的是,您可以选择不使用find,这可以使其更快。参考链接中的第二个答案解释了如何根据您的需要编写 chmod 命令

    【讨论】:

    • 谢谢!您的参考链接对我非常有用
    【解决方案2】:

    你可以这样做

    find /path/to/project -type d -exec chmod 0755 {} +
    

    这会将尽可能多的参数分组到chmod

    另外,请考虑先使用chmod -R,然后再触摸目录。

    【讨论】:

    • 我假设chmod -R 将权限设置为both(文件和目录)而不是文件/目录单独,因此它会错误地更改权限。最后 + 怎么样 - 这是一个有趣的想法,谢谢!
    • 关于chmod -R,我没有说别的。尽管如此,使用chmod -R 进行全面扫描,然后仅使用find -type d -exec chmod 755 {} + 进行目录扫描会更快。
    • 是的,你说得对,我先不明白你的意思
    【解决方案3】:

    可以直接使用命令chmod:

    chmod -R a-x+X,u+rw,go+r-w /path/to/project
    

    其中a-x+X - 删除目录树中所有文件的执行权限(即递归),同时允许目录浏览。

    构造a-x+X 删除任何文件和目录的所有(a,即用户、组和其他)的执行位(-x),然后将其(+X)添加到所有目录(和可执行文件,但由于之前的-x,不存在这样的文件。 以类似的方式go+r-w 添加读取权限 (+r) 并删除组和其他 (go) 的写入权限 (-w)。

    【讨论】:

    • 哇,太酷了,非常感谢!你能解释一下a-x+X选项是什么吗?
    • 我添加了一些 cmets,以防它们对其他人有用。
    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 2012-02-16
    • 2020-07-13
    • 2012-04-27
    • 2018-09-06
    • 2011-04-13
    • 2020-09-23
    • 2019-03-23
    相关资源
    最近更新 更多