我试图快速备份大型GNU/Linux文件系统上的ACL。扩展权限并不是真正必要的。
我在一个小分区上运行了4个小基准,仅仅是为了估计经过的时间(秒)和生成文件大小(兆字节)。
getfacl -R -p /backup/dir > out_file:58.715s (36)find /backup/dir -printf "%m %u:%g %p \n" > out_file:54.053s (27)find /backup/dir -printf "%m %p \n" > out_file:0.763 s(26)ls -laR /backup/dir > out_file:4.865s (20)因此,如果需要用户:group,ls是最好的解决方案。
理想情况下,out_file应该如下所示:
755 user:group /full/path/to/dir
744 user:group /full/path/to/file
...但据我所知,从ls获得文件的完整路径需要额外的命令,这将减慢进程的速度。我们讨论的是非常大的文件系统。
难道没有比ls更好(更快/更高效)的工具来处理这个问题吗?
为什么find在检索user:group时比ls慢得这么快?
作为一个加号,ls还可以处理文件名上的转义特殊字符(使用-b选项)。
解题:(感谢@shodanshok)第一次在sync之后:
getfacl -n -R -p /backup/dir > out_file:19.561 S(36)但是第二次运行相同的命令:
getfacl -n -R -p /backup/dir > out_file:2.496s (36)发布于 2017-04-19 17:29:59
根据我的经验,getfacl可以被用户名解析过程绑定。尝试添加-n开关,例如发出getfacl -n -R -p /backup/dir > out_file
在基准测试期间,要特别注意inode/dentry缓存,因为它可以很容易地扭曲您的时间测试。在每个基准测试之前,发出以下命令来清空两个缓存:sync; echo 3 > /proc/sys/vm/drop_caches
https://serverfault.com/questions/845339
复制相似问题