Als ich versuchte, eine Torrent-Datei aus einem Verzeichnis zu erstellen, das mehrere leere Unterverzeichnisse enthält, wurden diese ignoriert und in der Torrent-Datei weggelassen. Ich frage mich, ob dies einqBittorrentSache oder eine Einschränkung derBitTorrentProtokoll. Ermöglicht das BitTorrent-Protokoll die Freigabe leerer Verzeichnisse unter Beibehaltung des tatsächlichen Dateibaums?
Bearbeiten ⸺ Es gibt Torrents mit leeren Verzeichnissen.
Ja, die gibt es tatsächlich. Aber wie?
Mit dem BEncode-Editor geöffnet
Wie qBittorrent mit diesen mysteriösen leeren Verzeichnissen umgeht
Antwort1
Es ist nicht möglich, leere Verzeichnisse im BitTorrent-Protokoll freizugeben.
Alle Dateien in einer BitTorrent-Metadatei (.torrent-Datei) werden in der Liste „Dateien“ aufgelistet, die sich im „Info“-Wörterbuch befindet. Verzeichnisse werden als Teil des „Pfads“ zu einer Datei relativ zum Stammverzeichnis gespeichert.
In der Protokollspezifikation BitTorrent v1 heißt es:
Pfad – Eine Liste mit UTF-8-codierten Zeichenfolgen, die den Unterverzeichnisnamen entsprechen, wobei der letzte der eigentliche Dateiname ist (eine Liste mit der Länge Null ist ein Fehlerfall).
Sehen:https://www.bittorrent.org/beps/bep_0003.html
Dies bedeutet, dass es unmöglich ist, Verzeichnisse ohne darin enthaltene Dateien freizugeben, da das letzte Element eines Pfads immer als Dateiname interpretiert wird.
Das folgende Beispiel zeigt, wie die Pfade zu Dateien in einer Torrent-Datei (als JSON formatiert) gespeichert werden:
{
"info": {
"files": [
{
"length": 1647396,
"path": [
"stage_2_detailed_class_info.csv"
]
},
{
"length": 124100,
"path": [
"stage_2_test_images_jpg",
"0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg"
]
},
],
"name": "kaggle-pneumonia-jpg",
}
}
Dieser Torrent enthält zwei Dateien:
- kaggle-pneumonia-jpg/stadium_2_detaillierte_klasseninfo.csv
- kaggle-pneumonia-jpg/stage_2_test_images_jpg/0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg"
Das Verzeichnis „stage_2_test_images_jpg“ existiert nur, weil es im „Pfad“ zur Datei „0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg“ enthalten ist.
Wenn wir „0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg“ aus dem Torrent entfernen würden, würde das Verzeichnis „stage_2_test_images_jpg“ das letzte Element im „Pfad“ und würde zu einer Datei statt zu einem Verzeichnis.