簡體   English   中英

如何檢測遞歸鏈接目錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM