Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Как подсчитать размер папки с учетом ссылок? 
Author Message
MVV



PostPosted: Tue Jun 22, 2010 21:08    Post subject: Reply with quote

Quote:
Вот именно что ссылка на содержимое, а не само содержимое, это абсолютно разные вещи.

А покажи мне хотя бы одно место, где я эти понятия путал. Я лишь говорю, что каждый файл имеет минимум одну жесткую ссылку - и эта ссылка - сам файл, который ты видишь в папке. В таблице файлов (MFT) для каждого индекса хранится инфа о том, как получить доступ к содержимому (неважно, где-то на диске это содержимое или прямо в MFT). А далее в каталоге, где ты создаешь файл, создается запись, содержащая простейшие атрибуты файла и индекс в MFT, по которому искать содержимое файла. И каждая жесткая ссылка - это такая запись в каталоге. Сколько бы их ни было, где бы они не находились, друг о друге они не знают ничего кроме их общего числа - система удаляет содержимое файла, когда число жестких ссылок на него уменьшается до нуля.

Вот и подумай теперь, откуда арифметика. Если у меня 2 жестких ссылки на файл в одной папке и 2 в другой - внимание, вопрос на миллион, сколько всего ссылок? Правильно, 4. И NL_Info, как и NTLinks, тебе скажут, что ссылок 4. А если ты имеешь в виду не число жестких ссылок, возвращаемое плагинами, а число дубликатов индексов в пределах рассматриваемого каталога - так и скажи, тогда математика будет иная. Но тогда твой способ абсолютно ничем не отличается от моего, предложенного в самом начале темы (и более-менее подробно описанного, например, тут) - суммировать файлы, запоминая индексы уже просуммированных, чтобы в дальнейшем для каждого следующего файла проверять, был ли посчитан файл с таким индексом.

Quote:
Или ты о каком-то чудо-счётчике, о котором тут никто представления не имеет?

Почему же, я все время говорю о поле, возвращаемом плагинами.


Quote:
Как это не объяснил? Может это ты не удосужился прочесть?

Quote:
То бишь сам файл + 3 ссылки?

Quote:
Если же исходного файла в этой папке не будет, то скрипт должен отсеять все файлы, реальные пути которых не ведут в родительских каталог.

Если я должен был прочесть, что это Путь нахождения самой ссылки, а не исходного файла, то это не поможет тебе ничем. Для каждой жесткой ссылки символьный или реальный путь к ней - это и есть путь к ссылке, все ссылки равноправны, нельзя сказать, что исходный файл по ссылке aaa.bbb лежит под именем bbb.ccc. Можно лишь сказать, что файлы aaa.bbb и bbb.ccc являются жесткими копиями, что означает, что их записи в каталогах (которые по существу и являются жесткими ссылками) ссылаются на один элемент таблицы файлов. А символические ссылки на файл/папку, введенные в висте, а также точки соединения (junction) - это ссылки, которые ссылаются на объект каталога, а не на объект таблицы файлов, поэтому для них понятие реального пути имеет прямой смысл.

Quote:
Тогда остальные колонки там так, для красоты прикручены?

Аж интересно стало, о каких конкретно колонках ты говоришь.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
View user's profile Send private message ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group