編集⸺ 空のディレクトリを持つトレントが存在します。

編集⸺ 空のディレクトリを持つトレントが存在します。

複数の空の子ディレクトリを含むディレクトリからtorrentファイルを作成しようとしたところ、それらは無視され、torrentファイルから省略されました。これはビットトレント物または制限ビットトレントプロトコル。BitTorrent プロトコルでは、実際のファイル ツリーを保持したまま、空のディレクトリを共有できますか?

複数の空の子ディレクトリを含むディレクトリのイメージ。 トレント ファイル内で無視され省略されたディレクトリの画像。


編集⸺ 空のディレクトリを持つトレントが存在します。

はい、実はいくつかあります。でも、どうやって?

53619 個のトレントのうち 19 個に空のディレクトリがあります。

トレント内の空のディレクトリ 05e4bb4227689c24fb61cd200e812d402526475b

BEncodeエディタで開く

リスト「パス」の最後の要素は空の文字列です

qBittorrent がこれらの謎の空ディレクトリをどのように処理するか

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」が「パス」の最後の要素になり、ディレクトリではなくファイルになります。

関連情報