回答:
あなたの質問が理論的なものなのか、それとも本当の問題なのかはわかりません...理論的に答えるつもりです...
完全なファイルが完成している限り、技術的にはそうです。実際にこれを達成するのに最適なプログラムは完全にはわかりません。
より良い解決策は、.torrentファイルをダウンロードして、あなたとあなたの友人の間のプライベートトラッカーに変更することです。
はい、torramユーティリティを使用してそれを行うことができます。部分的または完全にダウンロードされたファイルをいくつでも使用して、torrentのダウンロードディレクトリを再構築します。したがって、両方のファイルが〜/ Download / Torrents /のどこかにある場合は、次のように使用できます。
torram -c -o <the_directory_where_to_put_reconstructed_files> <yourtorrentfile.torrent> ~/Download
ファイルがどこにあるかに関係なく、両方の親になるディレクトリを指定するだけです(そのため、例では〜/ Download /を使用しています)。最後の引数として「/」を使用できるかどうかわからない場合-ツールはディレクトリを再帰的にスキャンし、ファイルサイズで候補を見つけ、md5ハッシュでチャンクをチェックし、見つかったすべての適切な部分を最終ファイルにマージします。
2人の別々のユーザーが異なるシステムにダウンロードしていた1つのトレントファイルがあり、BがダウンロードしたものをAのシステムに持ち込みたい場合、BのファイルをAのtorrentに直接コピーしてからtorrentを再開するだけです。人Aのシステムに。私が使用したすべてのBittorrentピアプログラムは、ファイルのどこにあるのかを把握し始めると、ファイルをスキャンします。したがって、ファイルからの再開は問題ではありません。
しかし、これは、torrentが多数のファイルで構成されていて、人物Bに多数の完全なファイルがあるか、Aがダウンロードを開始しなかった多数の不完全なファイルがある場合にのみ役立ちます。
ユーザーAのファイルをユーザーBの同じ名前のファイルで上書きした場合、ユーザー間で既にダウンロードされているファイルを「結合」することはなく、ユーザーBがそのファイルを中断したところになります。
トレントが非常に大きな単一のファイルである場合、これは役に立ちません。Bがダウンロードを中断したところを引き継ぐだけです。
それ以外の場合は、@ Alexey Markovのコメントで提案されているように、mergetorrentを調べてください。私はこのユーティリティを使用していませんが、あなたが望むことをするようです。
同じtorrentの2つの異なるファイルである場合は、両方のファイルを同じ(不完全な)ダウンロードデータに移動するだけです(ファイル名は正確にターゲットにする必要があります)。次に、再チェックを行うと、Bittorrentクライアントは新しいファイルの状況を既知の急流チェックサムと比較します。
ダウンロードしたものが同じファイルからのものである場合。少し悪化します。潜在的なツールのアルゴリズムは非常に単純明快なので、誰もこのためのツールを書いたのではないでしょうか。
すでに述べたように、ツールにとってこれは簡単な作業です。そのようなツールがない場合(私は知りません)、ファイルを手動でマージできます。これは、クライアントがガベージ(=チェックサムと一致しない部分)をダウンロードしなかった場合に機能します。この場合、空でないブロックのみをコピーするツールを使用できます。dd if=inputfile.dat of=outputfile.dat bs=1024 conv=notrunc,sparse
これを行うには、bs=
(ブロックサイズ)パラメータをダウンロードファイルのチャンクサイズに調整します。最後に、Torrentクライアントでファイルを再スキャンすると、以前よりも多くのチャンクが検出されます。