2013-06-21 3 views
0

Учитывая следующий сценарий: у меня есть клиент Windows, который подключен к SMB-ресурсу. Я хочу рекурсивно погрузиться в каталоги на этом ресурсе, чтобы что-то сделать с файлами (представьте, что они вычисляют хэши sha1 для них, если превышен определенный размер).Как определить рекурсивно связанные каталоги?

Что бы я обычно делал: рекурсивный dirInfo.EnumerateDirectories() ловил некоторые исключительные случаи, такие как несанкционированный доступ, и ставил в очередь файлы в потоке оператора (затем вычислял sha1).

Задача: Рекурсивные символические ссылки. Мой testscenario довольно просто

[email protected]:~$ ls -l /home/me/tmp/recursionStartsHere 
lrwxrwxrwx recursion -> /home/me/tmp/recursionStartsHere 

То, что я пытался (кроме googlin) заключается в использовании dirInfo.Attributes.HasFlag(FlagAttributes.ReparsePoint) обнаружить символические ссылки, которые (естественно) не работает. Подход грубой силы выглядит как индексирование каждого каталога с накопленной контрольной суммой из их содержимого, что может быть даже не беспорядочным.

Как я из практических идей сейчас, Как я могу определить определенную директорию (только) символическую ссылку? Конечно, я бы предпочел независимость от платформы, поэтому мой код работает одинаково для удаленного SMB, а также на локальных дисках NTFS.

ответ

1

Там интересная запись в блоге от Трои:

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

Хотя я не знаю, является ли это работать с SMB акций.

+0

Хотя это хороший способ указать цель на NTFS, он не работает для рекурсивно связанных каталогов на smb-ресурсе. – mbx

Смежные вопросы