- 再帰的にダウンロードする必要がある大きな項目があります。
- 予想サイズ > 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 パラメーターの説明:
--recursive
wget
再帰ディレクトリ内のすべてのファイルを通知します。-erobots
ファイルがwget
あっても再帰を続行するように指示します。robots.txt
--no-parent
wget
私が望むものではないので(おそらく誰も欲しいものではないかもしれません)、上に(つまり、親)再帰しないように指示します。--spider --server-response
wget
各ファイルのヘッダーのみを印刷するように指示します。--spider
私はこのオプションが誤ってディスク上のすべてのファイルを削除したことを知っており、この機能により誤って削除された数ギガバイト、数千のファイルをダウンロードしました。そのため、この動作が誤ってファイルを削除するのを防ぐために、一時ディレクトリからコマンドを実行しました。
grep
内容の長さがバイト単位の行だけを傷付けるように指示します。gawk
Tell はバイトを合計し、バイト数を MB 単位で印刷します。