まず、すべてのファイルをダウンロードせずにwget再帰のフルサイズをどのように取得できますか?

まず、すべてのファイルをダウンロードせずにwget再帰のフルサイズをどのように取得できますか?
  • 再帰的にダウンロードする必要がある大きな項目があります。
  • 予想サイズ > 150GB(おおよそのサイズと聞きました)
  • 今収納スペースはありません。
  • したがって、全体のサイズがどれだけ大きいかを把握し、より多くのストレージ容量を確保するための措置を講じる必要があります。
  • 追加のストレージ容量を確保する前に、全体のサイズを把握する必要があります。
  • ターゲットURLは、一種のhttpファイルサーバーでホストされているファイルディレクトリです。

wget --recursiveまず、すべてのファイルをダウンロードせずにフルサイズを取得するにはどうすればよいですか?

注:この質問は、静的コンテンツ(動的に生成されていないコンテンツ、つまりコンテンツの長さが明確に定義されたコンテンツ)を含むWebページにのみ適用されます。

答え1

私が見つけたものは次のとおりです。

#!/bin/bash
tmpdir=$(mktemp -d)
(
cd ${tmpdir}
wget --recursive  -erobots=off --no-parent --spider --server-response http://mirrors.rit.edu/rocky/9.1/BaseOS/x86_64/os/ 2>&1 |grep --line-buffered -i content-length | gawk '{sum+=$2}END{print sum/1e6}'
)
find ${tmpdir} -type d -delete

wget パラメーターの説明:

  • --recursivewget再帰ディレクトリ内のすべてのファイルを通知します。
  • -erobotsファイルがwgetあっても再帰を続行するように指示します。robots.txt
  • --no-parentwget私が望むものではないので(おそらく誰も欲しいものではないかもしれません)、上に(つまり、親)再帰しないように指示します。
  • --spider --server-responsewget各ファイルのヘッダーのみを印刷するように指示します。
    • --spider私はこのオプションが誤ってディスク上のすべてのファイルを削除したことを知っており、この機能により誤って削除された数ギガバイト、数千のファイルをダウンロードしました。そのため、この動作が誤ってファイルを削除するのを防ぐために、一時ディレクトリからコマンドを実行しました。
  • grep内容の長さがバイト単位の行だけを傷付けるように指示します。
  • gawkTell はバイトを合計し、バイト数を MB 単位で印刷します。

関連情報