[英]How to detect recursively linked directories?
給定以下情況:我有一個Windows客戶端,該客戶端連接到SMB共享。 我想遞歸地深入該共享上的目錄以對文件進行處理(如果超出一定大小,可以為它們計算sha1哈希值)。
我通常要做的是:遞歸dirInfo.EnumerateDirectories()
捕獲一些特殊情況,例如未經授權的訪問,並將文件排隊到操作員線程中(然后計算sha1)。
挑戰:遞歸符號鏈接。 我的測試場景很簡單
me@smb:~$ ls -l /home/me/tmp/recursionStartsHere
lrwxrwxrwx recursion -> /home/me/tmp/recursionStartsHere
我嘗試過的(除了googlin之外)是使用dirInfo.Attributes.HasFlag(FlagAttributes.ReparsePoint)
來檢測符號鏈接(當然)不能解決問題。 蠻力方法似乎是用目錄中內容的累積校驗和來索引每個目錄,這甚至可能不是無沖突的。
由於我現在沒有實際的想法, 如何確定某個目錄(僅)是符號鏈接? 當然,我希望獨立於平台,因此我的代碼在遠程SMB以及本地NTFS驅動器上的工作原理相同。
特洛伊(Troy)有一個有趣的博客條目:
http://troyparsons.com/blog/2012/03/symbolic-links-in-c-sharp/
雖然我不知道它是否適用於SMB股票。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.