Возможно ли объединить два одинаковых незавершенных торрент-файла.? например. Я загружаю торрент, который состоит из 2 частей, но я загружаю только первую часть, а мой друг загружает вторую часть. Можно ли объединить эти два файла, чтобы у меня был законченный торрент.
6 ответов
Я не уверен, если ваш вопрос является просто теоретическим или реальным вопросом ... собираюсь ответить как теоретический ...
Пока полный файл закончен, технически да - я не совсем уверен в том, что лучшая программа на самом деле выполняет это.
Лучшим решением может быть загрузка файла .torrent и его преобразование в личный трекер между вами и вашим другом, чтобы вы друг друга дополнили.
Да, вы можете сделать это с помощью утилиты torram . Он восстанавливает каталог загрузки torrernt, используя любое количество частично или полностью загруженных файлов. Так что, если ваши файлы находятся где-то в ~/Download/Torrents/, вы можете использовать:
torram -c -o <the_directory_where_to_put_reconstructed_files> <yourtorrentfile.torrent> ~/Download
Неважно, где именно находятся ваши файлы - просто укажите любой каталог, родительский для них обоих (именно поэтому я использовал ~/Download/ в примере). Если вы не уверены, что можете использовать '/' в качестве последнего аргумента - инструмент рекурсивно просматривает каталог, находит кандидатов по размеру файла, проверяет их фрагменты по хэшу md5 и объединяет все найденные хорошие фрагменты в окончательный файл.
Если у вас есть один торрент-файл, который два разных человека скачивали в разных системах, и вы хотите передать то, что человек B загрузил, в систему человека А, то простая и очевидная вещь - просто скопировать файлы Б непосредственно в торрент А, а затем возобновить торрент на систему человека А. Все используемые мной одноранговые программы Bittorrent будут сканировать файлы, когда они начнут выяснять, где они находятся в файле. Поэтому возобновление работы с файлами не является проблемой.
Но - это поможет вам, только если торрент состоял из нескольких файлов, а у человека B было несколько полных файлов или несколько неполных файлов, которые A не начал загружать.
Если вы перезаписываете файлы человека А файлами того же имени, что и у человека Б, вы не будете "объединять" то, что уже загружено между ними, вы будете там, где человек Б остановился с этим файлом.
Если ваш торрент представляет собой просто очень большой отдельный файл, это вам не поможет, вы просто перенесете туда, где B прервал загрузку.
В противном случае посмотрите на mergetorrent, как подсказывает @Alexey Markov в комментариях. Я не пользовался этой утилитой, но она, кажется, делает то, что вы хотите.
Если вы загружаете что-то вроде двух частей .iso
или .rar
файлов, это означает ДА, вы можете это сделать. Например, вы можете скачать atutorial-part1.rar
то время как ваш друг скачивает atutorial-part2.rar
без проблем.
Большинство клиентов BitTorrent имеют возможность перепроверить загруженные файлы. Если вы объединяете законченные части торрента, а затем запускаете повторную проверку, клиент должен распознать совокупное содержимое (и начать его заполнение).
Если это два разных файла одного и того же торрента, вы можете просто переместить оба файла в одни и те же (неполные) данные для загрузки (имя файла должно точно соответствовать цели). Затем выполните перепроверку, и ваш клиент Bittorrent сравнит вашу новую ситуацию с файлом с известными контрольными суммами торрента.
Если ваши скачанные фрагменты находятся в одном файле. Становится немного хуже. Интересно, что никто не написал инструмент для этого, потому что алгоритм для потенциального инструмента довольно прост и прост:
- прочитать все контрольные суммы
- открыть оба / все файлы / незавершенные загрузки
- перебрать все куски
- проверьте, содержит ли одна из этих загрузок правильный хеш
- возьмите этот хэш и запишите его в «целевую загрузку»
- удалить все остальные входные файлы
Как уже говорилось, для инструмента это простая задача. Если у вас нет такого инструмента (я его не знаю), вы можете объединить файл вручную, что работает в том случае, если ваш клиент не загружал мусор (= части, которые не соответствуют контрольной сумме). В этом случае вы можете использовать инструмент, который копирует только непустые блоки. dd if=inputfile.dat of=outputfile.dat bs=1024 conv=notrunc,sparse
может сделать это, просто настройте параметр bs=
(размер блока) в соответствии с размером порции вашего загружаемого файла. В конце заново отсканируйте ваш файл в клиенте Torrent, и он должен найти больше фрагментов, чем раньше.