LINUX.ORG.RU
ФорумTalks

Склейка недокачанных файлов.

 ,


0

2

Допустим, имеются два недокачанных торрента с убунтой, длина обоих файлов *.part совпадает до байта, отличаются только имена образов. Как добавить недостающие части файла А из файла Б, если там таковые имеются? Вариант «скачать всё заново с африканского сайта» не подходит - версия не та.

★★★★★

Самый простой вариант — запустить две копии torrent-клиента. Они друг друга увидят и сами соберут файл.

CYB3R ★★★★★
()

Сделать diff двух файлов. Отличия должны быть только такие, что у одного файла на этом месте нули, а у другого - нет. Соответственно, оттуда где данные скопировать туда, где нули.

Можно написать простую программу или скрипт, которые считывают по байтику из каждого файла и если один из них ноль, а другой нет, то пишут ненулевой на место нулевого.

Это если образы действительно одинаковые и реально отличаются только именами файлов (длина вообще не о чём не говорит, ISO-образ, скажем, может быть дополнен мусором до полного размера CD/DVD-диска). Если разные, то задача решения не имеет. Вообще не имеет.

Вариант с двумя копиями torrent-клиента тоже не плох, но я бы посоветовал тебе сначала сделать резервные копии этих файлов. Вдруг что-то пойдёт не так. Также интересно где хранится список хешей отдельных блоков файла (любой torrent-файл делится на блоки по N мегабайт, все передачи между клиентами идут блоками, каждый блок имеет свой собственный хеш, проверка целостности происходит поблочно). Возможно, будет обязательно наличие связи с другими пирами, у которых есть этот файл, чтобы получить эту информацию. Без метаданных же проверить целостность файла не представляется возможным (ну реально, как узнать, на этом месте в файле должны быть нули или он таки не докачен). А ещё что если есть какой-то блок, которого не хватает в обоих файлах?

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)

Т.к. размеры файлов совпадают, то торрент-клиент сделал преаллокацию.
Если предположить, что нескачанные части файлов забиты нулями, то можно OR сделать.
По умолчанию, клиенты должны качать части в случайном порядке.
Так что если процент закачки в обоих случаях больше 50%, то есть ненулевая вероятность получить целый файл.

Если сохранился торрент-файл, то и проверить можно, там хэши внутри для каждой части.

d ★★★★
()
Ответ на: комментарий от CYB3R

Попробовал скормить другой торренткачалке файл А с магнитной ссылкой Б (скачано 99.5% и у всех сидов так), прошло. А если наоборот, то со ссылкой не ест, а с торрентом совпадает лишь 6%, глюкодром. Пришлось докачивать недостающее. Обнаружилось что недостающего метра с кепкой там нет. Причём это такой важный метр, без которого бьются почти все ценные обои для рабочего стола! Но есть надежда что второй торрент с одним сидом со 100% файла когда-нибудь докачается.

Napilnik ★★★★★
() автор топика
Последнее исправление: Napilnik (всего исправлений: 1)

Хаха! Первые два ответа можно читать, как анекдот.

Вариант1> Сделать diff двух файлов... [прошло полчаса] Можно написать простую программу ... [ прошел час ] блаблабла. [ прошло еще время, но ничего так и не получилось ]

Вариант2> запустить две копии torrent-клиента. Они друг друга увидят и сами соберут файл.

Гениально просто:)

crypt ★★★★★
()
Ответ на: комментарий от crypt

Ерунда. Все эти варианты перебираются за 5 минут, особенно если выполнять их параллельно.

Sadler ★★★
()
Ответ на: комментарий от CYB3R

Ты забыл добавить, что и очень унылый.

Deleted
()

Используй силу эфира!

Valkeru ★★★★
()
Ответ на: комментарий от crypt

Хаха! Первые два ответа можно читать, как анекдот.

Вариант2> запустить две копии torrent-клиента. Они друг друга увидят и сами соберут файл.

Если до тебя не дошло, это не значит, что совет неправильный. 2 копии торрент клиента. Обоим скормить _один_и_тот_же_ .torrent фалй, в разные каталоги. Недокачанные файлы положить в эти каталоги с _соответствующими_ именами. У обоих клиентов должен быть доступ к трекеру, или хотя бы к retracker.local. После этого они корректно проверят контрольные суммы и начнут выкачивать недостающие chunk'и друг у друга

router ★★★★★
()
Ответ на: комментарий от router

Торренты архивных версий убунты есть тут: http://releases.ubuntu.com/ и тут http://old-releases.ubuntu.com/releases/

Включай на загрузку и наберись терпения, всё будет

Ещё, как ни смешно, можно попробовать закрытые трекеры, главное потом контрольные суммы проверять

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от router

Если до тебя не дошло, это не значит, что совет неправильный.

да мне понравился вариант с торрентом! чего ты мне объясняешь?! до тебя ведь не дошло, мой серьезный умник.

Старый анекдот был вроде такого:

«Почему вы не любите гибддшников?

Ответ 1: Потому что на основании социокультурных стереотипов блаблабла чего-то навернуто.

Ответ 2 (ясно и коротко): Потому что все гибддшники казлы!»

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от CYB3R

А сам-то, пробовал запустить сразу два гткашных трансмиссиона?

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от router

Торренты архивных версий убунты есть тут:

А надо «допустим, убунты», причём с косплейными обоями. А есть ли в сборке другие пакеты кроме обойных, в тексте не сказано. Разницу понимаешь, или первый день на лоре?

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от KivApple

которые считывают по байтику из каждого файла и если один из них ноль

Ты уверен что торрентокачалка не просто аллокейтит место на диске перед скачиванием, но и забивает его нулями? Я вот вовсе не уверен.

drull ★☆☆☆
()
Последнее исправление: drull (всего исправлений: 1)
Ответ на: комментарий от drull

Ну если это разреженный файл, то ФС сама позаботиться о том, чтобы оттуда куда не записывали считались нули.

KivApple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.