View previous topic :: View next topic |
Author |
Message |
iNSiDE

Joined: 30 Dec 2006 Posts: 78 Location: Беларусь
|
(Separately) Posted: Sun Aug 12, 2007 01:29 Post subject: [REQ] Поиск дубликатов и ссылки NTFS |
|
|
Достаточно давно я активно пользуюсь программой NTFSLinks нашего уважаемого модератора). В справке к программе заявлено, что Тотал абсолютно корректно работает со ссылками. В принципе Тотал безупречно работает со ссылками, однако, на мой взгляд, кое-где работу можно существенно прооптимизировать.
Сегодня, решив почистить винт от ненужных файлов и дубликатов, я воспользовался этой функцией Тотала. Задал поиск по фалам больше мегабайта, со сравненем их по содержимому. Вообщем этот процесс до сих пор идет у меня на компе). А причина в том, что Тотал сравнивает то, что, казалось бы, сравнивать вовсе необязательно, я имею ввиду файл и ссылку на этот файл. А этот процесс бесмысленной траты ресурсов длиться очень долго, так как у меня на винте повсеместно используются ссылки, я нашел им отличное применение: Расскиданные по всему винту музыка, видео, тексты, закачки, и так далее с использованием ссылок собраны в одну-единственную папку, откуда удобно все это запускать, просматривать и послушивать.
Я считаю нужным предложить автору не сравнивать файл и ссылку на него, которая фактически и являетя тем же файлам. Разумеется, такая возможность должна быть опциональной, ведь и в текущем поведении Тотала есть определенная логика, которую нельзя оспорить. (Опа, поиск дубликатов закончился ). Я предлагаю немножко обсудить в этой теме возможность реализации подобного. |
|
Back to top |
|
 |
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Sun Aug 12, 2007 02:21 Post subject: |
|
|
Попробуй использовать контентный плагин NL_Info. Увы, он не умеет определять, является файл огригиналом или жёсткой ссылкой, но можно создать колонку, которая выводит количество жёстких ссылок. Если значение больше 1, то это файл, имеющий ссылки (или он сам является ссылкой, что в данном случае не суть важно). В диалоге поиска TC при поиске дубликатов поставь условие на 1 жёсткую ссылку, поиск ускорится (в р-т не попадут все файлы, имеющие жёсткие ссылки). |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Aug 12, 2007 10:32 Post subject: |
|
|
Quote: | Я считаю нужным предложить автору не сравнивать файл и ссылку на него, которая фактически и являетя тем же файлам. Разумеется, такая возможность должна быть опциональной, ведь и в текущем поведении Тотала есть определенная логика |
Нужно API, чтобы определять, являются ли два файла одной областью диска, или нет. Есть ли такое API, я не знаю.. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Sun Aug 12, 2007 16:19 Post subject: |
|
|
Я на оффоруме предлагал добавить в функционалы сравнения по содержимому и синхронизации каталогов учёт NTFS-ссылок. Гислер проигнорировал. Хотя, как ни странно, Majkinetor поддержал  |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Aug 12, 2007 16:33 Post subject: |
|
|
funduk wrote: | Я на оффоруме предлагал добавить в функционалы сравнения по содержимому и синхронизации каталогов учёт NTFS-ссылок. Гислер проигнорировал |
Возможно, он не знал про API. |
|
Back to top |
|
 |
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Sun Aug 12, 2007 17:53 Post subject: |
|
|
Alextp, ещё постом назад ты писал, что сам не знаешь, есть ли такое API. Если бы оно было, думаю, CF реализовал бы его в NL_Info. |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sun Aug 12, 2007 18:08 Post subject: |
|
|
Quote: | назад ты писал, что сам не знаешь, есть ли такое API |
Ну да. Я не знаю, возможно и Гислер не знал(и сейчас не знает!).
Quote: | Если бы оно было, думаю, CF реализовал бы его в NL_Info. |
О!
Вот у кого надо спросить когда вернется из отпуска. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
iNSiDE

Joined: 30 Dec 2006 Posts: 78 Location: Беларусь
|
(Separately) Posted: Mon Aug 13, 2007 01:30 Post subject: |
|
|
Короче предлагаю хорошо шпрехающим залить вишь на офф форум, я такую дребядень не переведу. Или нужно тему, в которой funduk предалагал уже сделать это поднять хотя бы. |
|
Back to top |
|
 |
iNSiDE

Joined: 30 Dec 2006 Posts: 78 Location: Беларусь
|
(Separately) Posted: Sat Aug 18, 2007 23:42 Post subject: |
|
|
Дык есть API или нету? Залейте на форум  |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6192 Location: Москва
|
(Separately) Posted: Mon Aug 20, 2007 12:41 Post subject: |
|
|
DrShark wrote: | Попробуй использовать контентный плагин NL_Info. Увы, он не умеет определять, является файл огригиналом или жёсткой ссылкой |
Это невозможно принципиально. В файловой системе нигде не хранится информация о связях жёстких ссылок друг с другом. И вообще, для жёстких ссылок нет понятий "оригинал" и "ссылка", все жёсткие ссылки абсолютно равноправны.
Файловая система организована следующим образом (очень упрощённо): есть область на диске, где расположены данные, хранящиеся в файле. Этой области присвоен уникальный идентификатор. Есть файловая таблица, в которой указаны имя файла, некоторые его характеристики, и тот самый идентификатор, указывающий на место хранения данных. Так вот, жёсткие ссылки - это ни что иное как наличие в двух местах ссылок на одну и ту же область данных. Как ты скажешь, какая из этих двух идентичных ссылок "более равная"? Никак. Удалишь любую из них - останется другая, ничем от первой не отличающаяся. Оригинал можно указать только при работе с символичесими ссылками, но не с жёсткими.
DrShark wrote: | Alextp, ещё постом назад ты писал, что сам не знаешь, есть ли такое API. Если бы оно было, думаю, CF реализовал бы его в NL_Info. |
Теоретически плагин мог бы выдавать тот самый идентификатор, о котором я написал чуть выше. Только практического смысла в этом не очень много, всё равно без реализации этого реквеста использовать его не получится.
Тотал, в принципе, тоже мог бы получать этот идентификатор и, видя, что два файла (точнее, две файловые записи) имеют одинаковый идентификатор, не сравнивать их содержимое, и без того зная, что оно совпадёт до байта. Осталось найти необходимые функции и упросить Гислера это реализовать... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Tue Aug 21, 2007 13:03 Post subject: |
|
|
CaptainFlint wrote: | всё равно без реализации этого реквеста использовать его не получится |
Как же, получится - встроенный поиск TC + плагины. Как раз для поиска дубликатов
Quote: | имеют одинаковый идентификатор, не сравнивать их содержимое, и без того зная, что оно совпадёт до байта |
Ну, в поиске дубликатов это, имхо, при помощи NL_Info можно сделать уже сейчас, опираясь на количество связей (идентификатор ведь одинаковый для всех "копий" файла?). Хотя если речь идёт о встраивании опции игнора ссылок в TC, то пойдёт... |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6192 Location: Москва
|
(Separately) Posted: Tue Aug 21, 2007 20:35 Post subject: |
|
|
DrShark wrote: | Ну, в поиске дубликатов это, имхо, при помощи NL_Info можно сделать уже сейчас, опираясь на количество связей (идентификатор ведь одинаковый для всех "копий" файла?) |
Идентификатор одинаковый, но как ты отличишь пару ссылок a.txt + b.txt (id = 123) от пары ссылок c.txt + d.txt (id = 456)? У всех этих четырёх файлов количество жёстких ссылок будет выдаваться равным 2. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Tue Aug 21, 2007 21:52 Post subject: |
|
|
CaptainFlint, ты прав! Если будет возможность, добавь фичу в NL_Info. |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sat Aug 25, 2007 00:07 Post subject: |
|
|
Вот что нашлось! Пишите виш:
Ссылка
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 |
|
 |
DrShark
Joined: 21 Oct 2006 Posts: 911 Location: Kyiv, Ukraine
|
(Separately) Posted: Sat Aug 25, 2007 01:56 Post subject: |
|
|
Эта функция возвращает только число ссылок или что-то другое? Если первое, то в это NL_Info уже есть. |
|
Back to top |
|
 |
|
|
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
|