3

次のように wget を実行してwarcアーカイブを作成します。

$ wget --warc-file=/tmp/epfl --recursive --level=1 http://www.epfl.ch/

$ l -h /tmp/epfl.warc.gz
-rw-r--r--  1 david  wheel   657K Sep  2 15:18 /tmp/epfl.warc.gz

$ find .
./www.epfl.ch/index.html
./www.epfl.ch/public/hp2013/css/homepage.70a623197f74.css
[...]

epfl.warc.gzファイルだけが必要です。wget個々のファイルをすべて作成しないようにするにはどうすればよいですか?

私は次のように試しました:

$ wget --warc-file=/tmp/epfl --recursive --level=1 --output-document=/dev/null http://www.epfl.ch/
ERROR: -k or -r can be used together with -O only if outputting to a regular file.
4

2 に答える 2

2

tl;dr--delete-afterオプションとを追加します--no-directories

Option--delete-afterは、ダウンロードが完了した直後に、ダウンロードされた各ファイルを削除するように wget に指示します。結果として、実行中の最大ディスク使用量は、WARC ファイルのサイズにダウンロードされた単一の最大ファイルのサイズを加えたものになります。

オプション--no-directoriesは、wget が空のディレクトリの無駄なツリーを残すのを防ぎます。デフォルトでは、wget はホスト上のディレクトリ ツリーをミラーリングするディレクトリ ツリーを作成し、ミラーリングされたツリーの適切なディレクトリに各ファイルをダウンロードします。wget は、ダウンロードしたファイルが一時的なものである場合でもこれを行います--delete-after。それを防ぐには、オプションを使用します--no-directories

以下は、与えられた例を使用して結果を示しています(わずかに変更されています)。

$ cd $(mktemp -d)
$ wget --delete-after --no-directories \
  --warc-file=epfl --recursive --level=1 http://www.epfl.ch/
...
Total wall clock time: 12s
Downloaded: 22 files, 1.4M in 5.9s (239 KB/s)
$ ls -lhA
-rw-rw-r--. 1 chadv chadv 1.5M Aug 31 07:55 epfl.warc

を使用するのを忘れた場合は--no-directories、 を使用して空のディレクトリのツリーを簡単にクリーンアップできますfind -type d -delete

于 2018-08-31T15:19:45.537 に答える
0

個々のファイル ( なし--recursive) の場合、このオプション-O /dev/nullは wget が出力用のファイルを作成しないようにします。再帰的なフェッチ/dev/nullは受け入れられません (理由がわからない)。しかし、連結されたすべての出力を単一のファイルに書き込み、-O tmpfile後でこのファイルを削除しないのはなぜですか?

于 2016-09-16T06:46:41.433 に答える