複数の空の子ディレクトリを含むディレクトリからtorrentファイルを作成しようとしたところ、それらは無視され、torrentファイルから省略されました。これはビットトレント物または制限ビットトレントプロトコル。BitTorrent プロトコルでは、実際のファイル ツリーを保持したまま、空のディレクトリを共有できますか?
編集⸺ 空のディレクトリを持つトレントが存在します。
はい、実はいくつかあります。でも、どうやって?
BEncodeエディタで開く
qBittorrent がこれらの謎の空ディレクトリをどのように処理するか
答え1
BitTorrent プロトコルでは空のディレクトリを共有することはできません。
BitTorrent メタファイル (.torrent ファイル) 内のすべてのファイルは、「info」辞書内にある「files」リストにリストされます。ディレクトリは、ルート ディレクトリを基準としたファイルへの「パス」の一部として保存されます。
BitTorrent v1 プロトコル仕様では次のように規定されています。
path - サブディレクトリ名に対応する UTF-8 でエンコードされた文字列のリスト。最後の文字列は実際のファイル名です (長さがゼロのリストはエラーの場合です)。
見る:https://www.bittorrent.org/beps/bep_0003.html
つまり、パスの最後の要素は常にファイル名として解釈されるため、ファイルが含まれていないディレクトリを共有することは不可能です。
次の例は、ファイルへのパスが .torrent ファイル (JSON 形式) 内にどのように保存されるかを示しています。
{
"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",
}
}
このトレントには 2 つのファイルが含まれています:
- kaggle-肺炎-jpg/stage_2_detailed_class_info.csv
- kaggle-肺炎-jpg/stage_2_test_images_jpg/0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg"
ディレクトリ「stage_2_test_images_jpg」は、ファイル「0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg」の「パス」に含まれているためのみ存在します。
トレントから「0000a175-0e68-4ca4-b1af-167204a7e0bc.jpg」を削除すると、ディレクトリ「stage_2_test_images_jpg」が「パス」の最後の要素になり、ディレクトリではなくファイルになります。