Backup
加快在大型文件系統上僅備份 ACL
我正在嘗試對大型 GNU/Linux 文件系統上的 ACL 進行快速備份。擴展權限並不是真正需要的。
我在一個小分區上執行了 4 個小基準測試,只是為了估計經過的時間(秒)和生成的文件大小(兆字節)。
getfacl -R -p /backup/dir > out_file
: 58.715s (36MB)find /backup/dir -printf "%m %u:%g %p \n" > out_file
: 54.053s (27MB)find /backup/dir -printf "%m %p \n" > out_file
: 0.763s (26MB)ls -laR /backup/dir > out_file
: 4.865s (20MB)
ls
如果需要使用者:組,最好的解決方案也是如此。理想情況下,out_file應如下所示:
755 user:group /full/path/to/dir 744 user:group /full/path/to/file ...
但據我所知,從中獲取文件的完整路徑
ls
需要額外的命令,這會減慢程序。我們正在談論非常大的文件系統。難道沒有比
ls
處理這個更好(更快/更有效)的工具嗎?與 相比,為什麼
find
在檢索使用者:組資訊時速度會如此顯著減慢ls
?另外,
ls
還可以處理文件名上的特殊字元轉義(使用-b
選項)。**已解決:(**感謝@shodanshok)第一次之後
sync
:
getfacl -n -R -p /backup/dir > out_file
: 19.561s (36MB)但第二次執行相同的命令:
getfacl -n -R -p /backup/dir > out_file
: 2.496s (36MB)
根據我的經驗,
getfacl
使用者名解析過程可能會受到 CPU 的限制。嘗試添加-n
開關,例如發出getfacl -n -R -p /backup/dir > out_file
在基準測試期間,請特別注意 inode/dentry 記憶體,因為它很容易扭曲您的定時測試。在每個基準測試之前,發出以下命令以清空兩個記憶體:
sync; echo 3 > /proc/sys/vm/drop_caches