首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wget --warc-文件--递归的,防止写入单个文件

wget --warc-文件--递归的,防止写入单个文件
EN

Stack Overflow用户
提问于 2016-09-02 13:21:07
回答 2查看 1.5K关注 0票数 3

我运行wget来创建一个warc存档,如下所示:

代码语言:javascript
复制
$ 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创建所有单独的文件?

我试了如下:

代码语言:javascript
复制
$ 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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-31 15:19:45

tl;博士添加--delete-after--no-directories选项。

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

选项--no-directories防止wget留下无用的空目录树。默认情况下,wget创建一个目录树,该目录树镜像主机上的目录树,并将每个文件下载到镜像树的适当目录中。即使下载的文件由于--delete-after是临时的,wget也会这样做。要防止出现这种情况,请使用选项--no-directories

下面将使用给定的示例演示结果(略有更改)。

代码语言:javascript
复制
$ 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清理空目录树。

票数 2
EN

Stack Overflow用户

发布于 2016-09-16 06:46:41

对于单个文件(没有--recursive),-O /dev/null选项将使wget不为输出创建文件。对于递归获取,/dev/null不被接受(不知道原因)。但是,为什么不直接通过-O tmpfile将所有连接到一个文件的输出写入一个文件,然后删除这个文件呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39293501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档