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.

选项--delete-after指示 wget 在下载完成后立即删除每个下载的文件。因此,执行期间的最大磁盘使用量将是 WARC 文件的大小加上单个最大下载文件的大小。

选项--no-directories可防止 wget 留下无用的空目录树。默认情况下,wget 创建一个目录树来镜像主机上的目录树,并将每个文件下载到镜像树的相应目录中。即使下载的文件是临时的,wget 也会这样做--delete-after。为防止这种情况,请使用 option --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 回答