如何检测递归链接的目录

本文关键字:链接 递归 何检测 检测 | 更新日期: 2023-09-27 18:19:38

给定以下场景:我有一个连接到SMB共享的windows客户端。我想递归地深入到该共享上的目录中,对文件进行处理(想象一下,如果超过一定的大小,则为它们计算sha1哈希)。

我通常会做的是:递归dirInfo.EnumerateDirectories()捕获一些异常情况,如未经授权的访问,并将文件排队到操作员线程(然后计算sha1)。

挑战:递归符号链接。我的测试场景很简单

me@smb:~$ ls -l /home/me/tmp/recursionStartsHere
lrwxrwxrwx recursion -> /home/me/tmp/recursionStartsHere

我尝试过的(除了谷歌)是使用dirInfo.Attributes.HasFlag(FlagAttributes.ReparsePoint)来检测符号链接,当然这是不可行的。暴力方法似乎是用内容中累积的校验和对每个目录进行索引,这甚至可能不是无冲突的。

由于我现在没有实用的想法,我如何判断某个目录(仅)是符号链接当然,我更喜欢独立于平台的,这样我的代码在远程SMB和本地NTFS驱动器上都能正常工作。

如何检测递归链接的目录

Troy有一个有趣的博客条目:

http://troyparsons.com/blog/2012/03/symbolic-links-in-c-sharp/

尽管我不知道它是否适用于SMB共享。