MD5

Пожелания по улучшению программы. Чего еще не хватает в DM.

Moderators: Korney San, Qwertiy, marcipan, igelizm

Post Reply
edlab
Posts: 2
Joined: 11 Oct 2007, 11:36 Thu

MD5

Post by edlab »

Если возможно, введите подсчет суммы MD5 для закачанных файлов, с отображением её в таблице.

Спасибо.
Alex Qwerty
Гуру
Posts: 175
Joined: 16 Jun 2007, 8:56 Sat

Post by Alex Qwerty »

Можно вручную - Ctrl-M.
Вот если бы еще она в процессе закачки потихоньку считалась (для больших файлов)...
XPProSP2, DM 5.6.1.1187, Opera 10.10.1893, oGet
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

... у вас имеется 4 сервера, 5 программистов (у меня такие сведения или догадки) и популярный менеджер закачек в некоторой географической зоне. MD5 сегодня не отдаёт ни один из серверов, по крайней мере я о таких не слышал и не знаю, но не хотели бы вы исправить это, осуществив это для ваших серверов и DM`а, для этого необходимо написать скрипт или програмку, которая по запросу DM`а будет модсчитывать MD5-хэш, заданного ссылкой, файла на вашем сервере и возвращать его DM`у, т.о пользователь сможет заранее узнать контрольную сумму интересующего его файла, без его предварительного полного скачивания. После того как данная возможность будет разрекламирована (за вас это запросто сделают пользователи DM`а, главное чтобы они о ней знали), ч.з некоторое время появятся и др. сервера с такой возможностью - это станет нормой, а вы первооткрывателями данной возможности.
VLAD.V
Posts: 6
Joined: 20 May 2007, 10:44 Sun

Post by VLAD.V »

Ну на серверах где лежит Linux есть файлы с MD5 суммой.
Вопрос в другом как заставить ДМ найти где именно была ошибка во время закачки, чтоб потом он перекачал именно те битые фрагменты!?
Alex Qwerty
Гуру
Posts: 175
Joined: 16 Jun 2007, 8:56 Sat

Post by Alex Qwerty »

Никак. Качай заново.
XPProSP2, DM 5.6.1.1187, Opera 10.10.1893, oGet
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Восстановление содержимого по MD5 (или др. контрольной сумме) теоретически - возможно, практически - нет. Файл надо качать заново.
VLAD.V
Posts: 6
Joined: 20 May 2007, 10:44 Sun

Post by VLAD.V »

Я в Linux'е с помощью rsync востановил битые файлы (которые DM повредил в процесе скачивания), быстро и с минимальной потерей трафика!
rsync — это программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодировку данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.
VLAD.V
Posts: 6
Joined: 20 May 2007, 10:44 Sun

Post by VLAD.V »

Кстати есть программы, например Orbit Downloader, который может просматривать содержимое ZIP-файла до его скачивания! Если учесть что архиватором можно открывать "iso" образы, то можно заставить просматривать архивы и образы дисков тоже! А если можно просматривать файлы не скачивая их, можно посмотреть размер кажного файла в архиве и увидеть где именно нарушена структура файла!
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

Про rsync я ничего не знаю, но насколько я понимаю по вашему описанию это не совсем "то". Узнать содержимое файла имея только его размер и контрольную сумму - нельзя. Для того, чтобы воссановить битый файл с минимизацией нагрузки на трафик, нужно иметь целый файл, и делать это например так:

1) сравнить размеры файлов и при несовпадении размеров у битого файла восстановить правильный размер;
2) условно поделить файл на кусочки заданного размера (чем меньше кусочки тем меньше полезная нагрузка на трафик и больше служебная нагрузка и наоборот);
3) подсчитать контрольные суммы каждого кусочка в отдельности (обоих файлов);
4) передать набор контрольных сумм на сервер (на нём хранится целый файл);
5) сервер сравнивает 2 набора контрольных сумм и выявляет не совпадающие пары сумм (участки файлов);
6) сервер начинает отправку тех участков файла, контрольная сумма которых не совпала, а клиентский компьютер, естественно, эти участки файлов принимает и записывает в резервную копию битого файла;
7) после окончания передачи восстановленных участков файла резервная копия должна стать целой, т.е рабочей с восстановленным содержимым.

От сюда видно, что для этого нужны компьютерные мощности, которых у разнаботчиков нет. К тому же эта процедура, как и процедура, описанная мной в 3-м посте будет поддерживаться только серверами, пренадлежащими разработчикам DM`а, по крайней мере по началу (имею ввиду Win-серверы, поскольку вы говорите, что в *nix это уже есть).
Last edited by x2088 on 02 Feb 2008, 13:12 Sat, edited 1 time in total.
x2088
Гуру
Posts: 556
Joined: 26 Jul 2007, 19:28 Thu
Contact:

Post by x2088 »

VLAD.V wrote:Кстати есть программы, например Orbit Downloader, который может просматривать содержимое ZIP-файла до его скачивания! Если учесть что архиватором можно открывать "iso" образы, то можно заставить просматривать архивы и образы дисков тоже! А если можно просматривать файлы не скачивая их, можно посмотреть размер кажного файла в архиве и увидеть где именно нарушена структура файла!
И DM то же это делать умеет. А для всего остального можно на сервере поставить архиватор, который по запросу DM`а открывал бы заданный файл, считывал его содержимое и передавал запрашиваемому содержимое данного архива. Для экономии ресурсов после первого открытия архива производить индексацию содержимого архива. Для этого так же нужны компьютерные мощности.
VLAD.V
Posts: 6
Joined: 20 May 2007, 10:44 Sun

Post by VLAD.V »

x2088 wrote:Про rsync я ничего не знаю, ...
... что в *nix это уже есть).
Утилита rsync использует алгоритм, разработанный австралийским программистом Andrew Tridgell, для эффективной передачи структур (например файлов) по коммуникационным соединениям в том случае, когда принимающий компьютер уже имеет отличающуюся версию этой структуры.
Принимающий компьютер разделяет свою копию файла на неперекрывающиеся куски фиксированного размера S, и вычисляет контрольную сумму для каждого куска: MD4 хэш и более слабый 'rolling checksum', и отправляет их серверу, с которым синхронизируется.
Сервер, с которым синхронизируются, вычисляет контрольные суммы для каждого кусочка размера S в своей версии файла, в том числе перекрывающиеся куски. Это может быть эффективно подсчитано ввиду особого свойства rolling checksum: если rolling checksum байт от n до n+S-1 равняется R, то rolling checksum байт от n+1 до n+S может быть посчитана исходя из R, байта n и байта n+S без необходимости учитывать байты, лежащие внутри этого интервала. Таким образом, если уже подсчитана rolling checksum байт 1-25, то для подсчета rolling checksum байт 2-26 используется предыдущая контрольная сумма и байты 1 и 26

http://manual.sidux.com/ru/sys-admin-rsync-ru.htm
http://www.opennet.ru/tips/info/977.shtml
Post Reply