wgetを高速化またはマルチスレッド化する方法は?


39

コンピューターハードウェア(cpu +マザーボード+グラフィックカード+メモリ+ハードディスク)をアップグレードしたばかりなので、新しいOSをインストールする必要があります。コマンドを使用してダウンロードしようとしましdebian-6.0.6-amd64-netinst.isowgetが、速度が遅いため耐えられませんでした。4Kb/s ~ 17 Kb/s、実行中のカメのように遅くなり、Chromeを使用している場合はさらに遅くなります。

私はwgetのヘルプ情報を読みましたが、もっと速くできるオプションはないようです。

とにかくwgetを高速化する方法はありますか?または、マルチスレッドでダウンロードすることは可能ですか?

PS:私の帯域幅は4Mです。私はこのコマンドを使用します:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso

1
wgetは接続を使用するだけです。そのため、遅い場合は、サーバーとの接続になります。たぶんあなたは遅いです、多分サーバーはそうです。btw 4mbit = 0.5mb / s、損失などは
言うまでもなく-Dr_Bunsen

@Dr_Bunsenあなたのアドバイスをありがとうございました、私はコマンドを試した@Gufran提案:axel、比較の幅をwgetaxelこれまで以上に迅速です。私はほとんどの状況では、私のダウンロード速度のボトルネックがあると思います1。何かが帯域幅を占有しました(あなたが言ったように:私は遅いです)。2。シングルスレッド。。サーバーが遅い。しかし、私は1&3ポイントとは何の関係もありません。
テイフィ

@Teifi axel同じリモートサーバーを使用しているときにマルチスレッドのパフォーマンスがwgetよりも優れている場合、ボックスとリモートサーバー間の待ち時間が非常に長くなる可能性があります。リモートサーバーへのpingを確認します。
ジョン・シウ

HTTrackを試しましたか?httrack.com/page/1/en/index.html
amanthethy

回答:


52

試してみませんaxelか?本格的なコマンドラインベースのダウンローダーです。

インストールaxelしてダウンロードを生成する

axel -a -n [Num_of_Thread] link1 link2 link3 ...

ここ'[Num_of_Thread]'で、ダウンロードする各リンクに対して作成する並列接続の数です。

-a 改善された進行状況バーを表示するだけです。

他の多くのダウンロードマネージャーとは異なり、Axelは1つのスレッドを使用して、すべてのデータを宛先ファイルに直接ダウンロードします。これにより、プログラムはダウンロードしたすべてのパーツを連結する必要がないため、最後に時間を節約できます。


コマンドラインに複数のパラメータがない限り、curlまたはwgetの代わりに利用可能な場合はおそらくエイリアスとラッパーを介してaxelを使用する方法があるかどうか疑問に思っています。
ソリン

1
この提案は、1つのファイルのダウンロードには不十分だと思います。必要に応じて修正してください。ここでの私の試みaskubuntu.com/q/813483/25388
レオレオポルドヘルツ

54

私はグフランの勧告を試みaxelましたが、それは私を非常に失望させました。私の目標は、CPUとハードディスクを占有し、8コアMac Proでもシステム全体の速度を低下させるCLIの代替品を見つけることでした。私はまた、マルチスレッドの置き換えたかったのと、いないこれらの複数のインスタンスを実行するスクリプトのいくつかのその場しのぎを。それで、私はさらに検索して、今考えているものが究極の最新のマルチスレッドCLIダウンローダーであるaria2であることを見つけました。私が抱えていた大きな問題は、SSLを介してファイルをダウンロードする「偽造」でした。私はそれをやってそれをキャッチしました。通常どおりリンクをダウンロードしていましたDownThemAllwgetcurlaxeltcdumphttpshttp。それは本当に私を怒らせ、もし私がチェックしなければ、私は誤った安心感を持っていただろう。この深刻なセキュリティ侵害について多くの人が知っているとは思えません。に戻るとaria2、他のダウンローダーよりも高度です。HTTP(S)、FTP、BitTorrent、およびMetalinkプロトコルをサポートし、マルチプラットフォームであり、ダウンロードゲリラです。DTAとは異なり、CPUまたはハードディスクに負荷をかけることなく、ISPの帯域幅を最大限に活用します。マニュアルページは巨大です。その多くのオプションのうちのいくつかを使用することはありません。ああ、ところで、私はSSLのパフォーマンスを確認しましtcdumpたが、偽物ではなく、しっかりしています。DTAの動作を模倣するスクリプトを作成しましたが、便利ではありません。

最大帯域幅を取得するために使用する基本的なコマンドは

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-c中断された場合にダウンロードの継続を許可し、サーバーごとに最大10接続-x 10-s 10許可し、-d "mydir"ファイルをディレクトリに出力しますmydir

aria2files.sh

#!/bin/bash

filename="$1" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

次の形式のテキストファイルを読み取ります。

files.txt

dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…

スクリプトはコマンドラインからファイル名を読み取ります。

aria2files.sh files.txt

ディレクトリを作成し、それらにダウンロードします。2番目の例に示すように、ネストされたディレクトリを作成できます。

詳細については、URLからテキストファイルにリストされている指定のディレクトリにファイルをダウンロードするBashスクリプトを参照してください。


ここでもあなたの方法を適用できますかaskubuntu.com/q/813483/25388私の失敗した試みaria2c -x10 -s10 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin
レオレオポルトヘルツ준영

ありがとう@ hmj6jmh!Rapsberry Piモデル3のレコードの場合:wget -4 -c <https://URL/ISO_FILE>〜40 KB /秒(で87300K .......... .......... 11% 38.7K 4h28mダウンロードした同じファイルがaria2c --disable-ipv6 -c〜250 KB /秒(144MiB/717MiB(20%) CN:1 DL:250KiB ETA:39m3s])を与える場合)
tuk0z

1
(私のような)あなたはSourceforgeのを避けたい場合は、aria2は、リポジトリの一部ですので、あなたがそれをインストールすることができますsudo apt install aria2
バー

いい答えだ。HTTPSのみを強制するサイトでは、axelストレートアップは機能しません。HTTPSを使用するように更新されたようですが、そのバージョンはまだ私のリポジトリにありません。 aria2私にとってはうまくいきました。
WindowsEscapist
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.