HTTPで非常に大きなファイルをダウンロードする

HTTPで非常に大きなファイルをダウンロードする

ダウンロード中ですプレイスネット場所画像の圧縮データベース (~132GiB)。残念ながらダウンロードしたファイルは破損しています。何度か試しましたが、そのたびに抽出が異なる位置で停止します (おおよそのオフセットは 10GiB、30GiB など)。プレイスネットダウンロード用の分割バージョンは提供されません。問題はダウンロードしたファイル内のバイト数にあるはずですが、ファイル全体を再度ダウンロードしなくても済むようにするにはどうすればよいでしょうか?

私のアイデアは次のとおりです。

  1. 拡張データグラム チェックサム用の TCP 拡張機能はありますか? また、それをどのように使用しますか?

  2. 最初のエラーバイトまでのオフセット(おおよそ)を確認できますか?ガンジップピング?

  3. 私は使用していますアクセルダウンロードします。ダウンロードが完了したら、ファイルの一部を再度ダウンロードすることは可能ですか? つまり、XXX.staxel 用のファイルを作成し、一部の範囲を未ダウンロードとしてマークし、axel を再度実行します。

答え1

別のアプローチを試すこともできます。つまり、FUSE ラッパーを使用して HTTP 経由でリモート ファイルを「マウント」し、その上で標準ツールを呼び出します。ツールは特定のバイトを読み取ろうとし、その試行は HTTP バイト範囲 GET 要求に変換されます。

これについてはStackOverflowで議論されています。この素晴らしい答えによるアダム使用するHTTPFS:

リモート zip ファイルをマウントし、そこから 1 つのファイルを抽出します。

mkdir mount_pt
sudo ./httpfs http://server.com/zipfile.zip mount_pt
sudo ls mount_pt zipfile.zip
sudo unzip -p mount_pt/zipfile.zip the_file_I_want.txt > the_file_I_want.txt
sudo umount mount_pt

あなたの場合、ファイルが ZIP ではなく、たとえばtar.gzファイルである場合 (提供されたリンクには登録が必要なので確認できません)、次の手順を適用できます。

mkdir mount_pt
sudo ./httpfs http://example.com/file.tar.gz mount_pt
sudo tar xzvf mount_pt/file.tar.gz

file-rollerあるいは、アーカイブ上の別の GUI ツールを呼び出すこともできます。

関連情報