web-dev-qa-db-ja.com

何千もの小さなファイルをダウンロードするときにAria2を最適化する方法は?

私の出発点は この質問 です。現在、aria2はファイルをダウンロードしていますが、思ったほど速くはありません(i7、ギガビット接続、AC-wifiを搭載したMacbook Proでこれを実行しています。チェーンのこれらのリンクを最大限に活用していません。 。)。

これらのスイッチでaria2を使用します

-x 16 -s 1

ファイルが小さいので、ダウンロードごとに複数のソケット(-s 1)を開く理由はありません。ただし、複数のファイルを並行してダウンロードすると(-x 16. 16が最大ですよね?)、全体的な速度が上がるはずですよね。

それにもかかわらず、出力ログを読んだとき、ダウンロードは並行していないようです。アリアの使い方に何か足りないものはありますか?

それとも、ボトルネックとなるのはariaへのURLのフィードですか(find。-tfを使用し、その結果を使用して、文字列連結を使用してariaにフィードされるURLを構築します)?

1
hensti

aria2cにダウンロードを1つだけ送信する場合、およびファイルサイズが小さい場合、複数の接続を開くことはあまり役に立ちません。ただし、aria2cを使用すると、複数のxargs -P <num>コマンドを簡単に並行して実行できます。

-P値がサーバーで許可されている値を超えていないことを確認してください。許可されていない場合、サーバーはエラーを返します。


find . -type f -printf '%P\n' \
    | xargs -I{} -P6 aria2c -x 1 -s 1 "https://web.archive.org/save/https://{}"

または、xargsにすべてのURLを1つのaria2c呼び出しに追加させます。

find . -type f -exec 'https://web.archive.org/save/https://%P\n' \
    | xargs aria2c -x 16 -s 1

しかし、パイプとfindを使用する代わりに、aria2の入力としてxargsからファイル記述子を作成するのが最善のオプションだと思います。

aria2c -x 16 -s 1 -i <(find . -type f -printf 'https://web.archive.org/save/https://%P\n')
1
pLumo