Backup

加快在大型文件系統上僅備份 ACL

  • April 19, 2017

我正在嘗試對大型 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

引用自:https://serverfault.com/questions/845339