通过wget获取内存并绕过磁盘写入

ale*_*lex 4 wget pipe ramdisk io-redirection

是否可以将网站内容 - 一组HTML页面 - 直接下载到内存而无需写入磁盘?

我有一组机器,每台机器都安装了24G,但我受限于磁盘配额到几百MB.我想将输出重定向wget到某种内存结构而不将内容存储在磁盘上.另一种选择是创建我自己的版本,wget但可能有一种简单的方法来管道

此外,并行运行此下载的最佳方法是什么(群集有> 20个节点).在这种情况下无法使用文件系统.

Sin*_*nür 13

查看wget下载选项:

'-O file'

"--output文档=文件"

文档不会写入相应的文件,但所有文件将连接在一起并写入文件.如果' - '用作文件,文档将打印到标准输出,禁用链接转换.(使用'./-'打印到名为' - '的文件.)

如果要将文件读入Perl程序,可以wget使用反引号调用.

根据你真正需要做的,你也许可以通过只使用获得LWP ::简单get.

use LWP::Simple;
my $content = get("http://www.example.com/");
die "Couldn't get it!" unless defined $content;
Run Code Online (Sandbox Code Playgroud)

更新:不知道你可以使用FuseFuse.pm在Perl中实现自己的文件系统.另请参见Fuse :: InMemory.


Tob*_*obu 5

你是root吗?你可以使用一个tmpfs.

重新编辑:你没有CPU限制,你不需要使用每台机器.您可以使用xargs -n SOME_NUMBER分割根URL的列表,假设有几个.

但是如果你热衷于共享内存,你可以设置一个集群内存缓存并使用memcachefs将其挂载到每台机器上.

  • 碰巧Linux在`/ dev/shm`上安装了一个`tmpfs`,每个人都可以访问(不仅仅是root).不是你*应*为此目的滥用它,但...... ;-) (4认同)
  • @ephemient你是一个坏人.(顺便说一句,/ var/lock也有效) (2认同)

Leo*_*era 5

如果你a)已经在使用Perl,b)想要下载HTML,并且c)解析它,我总是推荐LWPHTML :: TreeBuilder.