Можно ли создать торрент, если ни у одного участника нет всех данных, но есть у исходной группы?

Предположим, у вас есть несколько членов сообщества, которые совместно работали над частями проекта и теперь хотят распространять свои результаты. В качестве выдуманного примера предположим, что у команды разработчиков есть файл с именем «engine.data», у команды «колеса» есть «wheels.data», у команды по ремням безопасности есть «seatbelts.data» и так далее.

Желаемый результат — файл car.torrent, содержащий данные engine.data, wheels.data, seatbelts.data и т. Д. И т. Д., Которыми сообщество может поделиться как между собой, так и для всех.

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

У каждого члена сообщества есть полная версия своих данных, но ни у одного члена нет чужих данных. Если торрент уже существует, нет проблем! Каждый участник сеет чанки, которые у них есть, одновременно получая чанки, которых у них нет … именно так разработан BitTorrent. Но в этом сценарии торрент еще не создан. Может ли это быть? Если да, то как?

2 ответа
2

Нет, торрент работает не так. Когда вы создаете торрент, вы отправляете то, чем должны быть данные, и клиенты сравнивают то, что у них есть, с тем, что хранится на сервере. Таким образом, вместо добавления к торренту на сервере сервер удалит их данные.

Что вы хотите сделать, так это создать глобальный торрент-сервер, где каждый участник может добавить свою часть в виде торрента, чтобы вся группа проекта могла загружать все отдельные торренты и получать целые. Вам нужен только один торрент-сервер, который отслеживает все торренты, но это требование в любом случае, если вы не используете только одноранговое распространение. У меня нет опыта в этом, поэтому я не знаю, насколько легко с этим работать.

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

Каждый раз при обновлении необходимо создавать новый торрент.

Торрент — это только раздача на основе снимков, а не служба обновлений. Если вам нужно обновление, используйте вместо этого облачное хранилище, такое как OneDrive, Google Drive, DropBox и т. Д.

  • Спасибо LPChip! Я добавил примечание к своему вопросу, так как в моем случае данные считаются окончательными и не нуждаются в обновлении, но будущие посетители вопроса могут найти в вашем ответе информацию об обновлении ценным, и я надеюсь, что вы оставите ее в .

    — Стив В.
    8 часов назад

  • Я всегда публикую свои ответы с настроением, что другие тоже найдут это и могут иметь слегка измененный вопрос, так что да, я оставляю эту часть.

    — LPChip
    7 часов назад

  • 1

    Кроме того, конечно, все участники проекта могут отправлять свои данные одному человеку, а затем этот человек с полным проектом создает один торрент.

    — LPChip
    7 часов назад

У каждого члена сообщества есть полная версия своих данных, но ни у одного члена нет чужих данных. Если торрент уже существует, нет проблем! Каждый участник сеет чанки, которые у них есть, одновременно получая чанки, которых у них нет … именно так разработан BitTorrent. Но в этом сценарии торрент еще не создан. Может ли это быть? Если да, то как?

Теоретически это возможно, но я не думаю, что для этого есть существующие инструменты.

Основной процесс создания файла .torrent примерно таков:

  1. Начнем с:
    torrent = {
        "info": {
            "files": [],
            "piece size": 4194304,
            "pieces": bytearray(),
        },
    }
    
  2. Определите список всех файлов (с их размерами в байтах) и сохраните в torrent["info"]["files"];
  3. Объедините все файлы в один поток в том же порядке, что и список;
  4. Разделите поток на «части» фиксированного размера (например, 4 МБ);
  5. Рассчитайте SHA-1 каждой части;
  6. Объедините хэши SHA-1 всех частей и сохраните в torrent["info"]["pieces"].
  7. Сериализуйте весь torrent структура с помощью Bencode и выгрузить в торрент-файл.

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

(Это помогает, если длина файла в точности кратна размеру фрагмента, но некоторые приложения BitTorrent уже вставляют пустые файлы «заполнения», чтобы файлы были выровнены по частям, поэтому вы можете сделать то же самое.)

Для одного участника может быть проще сначала загрузить данные всех остальных (например, создать отдельные торренты для каждого компонента), а затем создать суперпорент из них обычным способом создания торрента.

В качестве альтернативы вы можете изучить другое программное обеспечение, такое как dat.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *