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