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 

[REQ] Поиск дубликатов и ссылки NTFS
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
iNSiDE



Joined: 30 Dec 2006
Posts: 78
Location: Беларусь

Post (Separately) Posted: Sun Aug 12, 2007 01:29    Post subject: [REQ] Поиск дубликатов и ссылки NTFS Reply with quote

Достаточно давно я активно пользуюсь программой NTFSLinks нашего уважаемого модератора). В справке к программе заявлено, что Тотал абсолютно корректно работает со ссылками. В принципе Тотал безупречно работает со ссылками, однако, на мой взгляд, кое-где работу можно существенно прооптимизировать.
Сегодня, решив почистить винт от ненужных файлов и дубликатов, я воспользовался этой функцией Тотала. Задал поиск по фалам больше мегабайта, со сравненем их по содержимому. Вообщем этот процесс до сих пор идет у меня на компе). А причина в том, что Тотал сравнивает то, что, казалось бы, сравнивать вовсе необязательно, я имею ввиду файл и ссылку на этот файл. А этот процесс бесмысленной траты ресурсов длиться очень долго, так как у меня на винте повсеместно используются ссылки, я нашел им отличное применение: Расскиданные по всему винту музыка, видео, тексты, закачки, и так далее с использованием ссылок собраны в одну-единственную папку, откуда удобно все это запускать, просматривать и послушивать.
Я считаю нужным предложить автору не сравнивать файл и ссылку на него, которая фактически и являетя тем же файлам. Разумеется, такая возможность должна быть опциональной, ведь и в текущем поведении Тотала есть определенная логика, которую нельзя оспорить. (Опа, поиск дубликатов закончился Smile ). Я предлагаю немножко обсудить в этой теме возможность реализации подобного.
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Sun Aug 12, 2007 02:21    Post subject: Reply with quote

Попробуй использовать контентный плагин NL_Info. Увы, он не умеет определять, является файл огригиналом или жёсткой ссылкой, но можно создать колонку, которая выводит количество жёстких ссылок. Если значение больше 1, то это файл, имеющий ссылки (или он сам является ссылкой, что в данном случае не суть важно). В диалоге поиска TC при поиске дубликатов поставь условие на 1 жёсткую ссылку, поиск ускорится Smile (в р-т не попадут все файлы, имеющие жёсткие ссылки).
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Aug 12, 2007 10:32    Post subject: Reply with quote

Quote:
Я считаю нужным предложить автору не сравнивать файл и ссылку на него, которая фактически и являетя тем же файлам. Разумеется, такая возможность должна быть опциональной, ведь и в текущем поведении Тотала есть определенная логика


Нужно API, чтобы определять, являются ли два файла одной областью диска, или нет. Есть ли такое API, я не знаю..
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Sun Aug 12, 2007 16:19    Post subject: Reply with quote

Я на оффоруме предлагал добавить в функционалы сравнения по содержимому и синхронизации каталогов учёт NTFS-ссылок. Гислер проигнорировал. Хотя, как ни странно, Majkinetor поддержал Very Happy
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Aug 12, 2007 16:33    Post subject: Reply with quote

funduk wrote:
Я на оффоруме предлагал добавить в функционалы сравнения по содержимому и синхронизации каталогов учёт NTFS-ссылок. Гислер проигнорировал

Возможно, он не знал про API.
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Sun Aug 12, 2007 17:53    Post subject: Reply with quote

Alextp, ещё постом назад ты писал, что сам не знаешь, есть ли такое API. Если бы оно было, думаю, CF реализовал бы его в NL_Info.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sun Aug 12, 2007 18:08    Post subject: Reply with quote

Quote:
назад ты писал, что сам не знаешь, есть ли такое API

Ну да. Я не знаю, возможно и Гислер не знал(и сейчас не знает!).

Quote:
Если бы оно было, думаю, CF реализовал бы его в NL_Info.

О!
Вот у кого надо спросить когда вернется из отпуска.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
iNSiDE



Joined: 30 Dec 2006
Posts: 78
Location: Беларусь

Post (Separately) Posted: Mon Aug 13, 2007 01:30    Post subject: Reply with quote

Короче предлагаю хорошо шпрехающим залить вишь на офф форум, я такую дребядень не переведу. Или нужно тему, в которой funduk предалагал уже сделать это поднять хотя бы.
Back to top
View user's profile Send private message
iNSiDE



Joined: 30 Dec 2006
Posts: 78
Location: Беларусь

Post (Separately) Posted: Sat Aug 18, 2007 23:42    Post subject: Reply with quote

Дык есть API или нету? Залейте на форум Wink
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6192
Location: Москва

Post (Separately) Posted: Mon Aug 20, 2007 12:41    Post subject: Reply with quote

DrShark wrote:
Попробуй использовать контентный плагин NL_Info. Увы, он не умеет определять, является файл огригиналом или жёсткой ссылкой

Это невозможно принципиально. В файловой системе нигде не хранится информация о связях жёстких ссылок друг с другом. И вообще, для жёстких ссылок нет понятий "оригинал" и "ссылка", все жёсткие ссылки абсолютно равноправны.
Файловая система организована следующим образом (очень упрощённо): есть область на диске, где расположены данные, хранящиеся в файле. Этой области присвоен уникальный идентификатор. Есть файловая таблица, в которой указаны имя файла, некоторые его характеристики, и тот самый идентификатор, указывающий на место хранения данных. Так вот, жёсткие ссылки - это ни что иное как наличие в двух местах ссылок на одну и ту же область данных. Как ты скажешь, какая из этих двух идентичных ссылок "более равная"? Никак. Удалишь любую из них - останется другая, ничем от первой не отличающаяся. Оригинал можно указать только при работе с символичесими ссылками, но не с жёсткими.

DrShark wrote:
Alextp, ещё постом назад ты писал, что сам не знаешь, есть ли такое API. Если бы оно было, думаю, CF реализовал бы его в NL_Info.

Теоретически плагин мог бы выдавать тот самый идентификатор, о котором я написал чуть выше. Только практического смысла в этом не очень много, всё равно без реализации этого реквеста использовать его не получится.
Тотал, в принципе, тоже мог бы получать этот идентификатор и, видя, что два файла (точнее, две файловые записи) имеют одинаковый идентификатор, не сравнивать их содержимое, и без того зная, что оно совпадёт до байта. Осталось найти необходимые функции и упросить Гислера это реализовать...
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Tue Aug 21, 2007 13:03    Post subject: Reply with quote

CaptainFlint wrote:
всё равно без реализации этого реквеста использовать его не получится

Как же, получится - встроенный поиск TC + плагины. Как раз для поиска дубликатов Smile
Quote:
имеют одинаковый идентификатор, не сравнивать их содержимое, и без того зная, что оно совпадёт до байта

Ну, в поиске дубликатов это, имхо, при помощи NL_Info можно сделать уже сейчас, опираясь на количество связей (идентификатор ведь одинаковый для всех "копий" файла?). Хотя если речь идёт о встраивании опции игнора ссылок в TC, то пойдёт...
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6192
Location: Москва

Post (Separately) Posted: Tue Aug 21, 2007 20:35    Post subject: Reply with quote

DrShark wrote:
Ну, в поиске дубликатов это, имхо, при помощи NL_Info можно сделать уже сейчас, опираясь на количество связей (идентификатор ведь одинаковый для всех "копий" файла?)

Идентификатор одинаковый, но как ты отличишь пару ссылок a.txt + b.txt (id = 123) от пары ссылок c.txt + d.txt (id = 456)? У всех этих четырёх файлов количество жёстких ссылок будет выдаваться равным 2.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Tue Aug 21, 2007 21:52    Post subject: Reply with quote

CaptainFlint, ты прав! Если будет возможность, добавь фичу в NL_Info.
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Sat Aug 25, 2007 00:07    Post subject: Reply with quote

Вот что нашлось! Пишите виш:


Ссылка

FindFirstFileNameW
Creates an enumeration of all the hard links to the specified file. The FindFirstFileNameW function returns a handle to the enumeration that can be used on subsequent calls to the FindNextFileNameW function.
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
DrShark



Joined: 21 Oct 2006
Posts: 911
Location: Kyiv, Ukraine

Post (Separately) Posted: Sat Aug 25, 2007 01:56    Post subject: Reply with quote

Эта функция возвращает только число ссылок или что-то другое? Если первое, то в это NL_Info уже есть.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group