繁体   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