是否可以将网站内容 - 一组HTML页面 - 直接下载到内存而无需写入磁盘?
我有一组机器,每台机器都安装了24G,但我受限于磁盘配额到几百MB。我在考虑将输出wget
重定向到某种内存结构而不将内容存储在磁盘上。另一种选择是创建我自己的wget
版本,但可能有一种简单的方法来管道
此外,并行运行此下载的最佳方式是什么(群集具有> 20个节点)。在这种情况下无法使用文件系统。
答案 0 :(得分:13)
' - O档'
' - 输出文档=文件
文档不会写入相应的文件,但所有文件将连接在一起并写入文件。如果' - '用作文件,文档将打印到标准输出,禁用链接转换。 (使用'./-'打印到名为' - '的文件。)
如果要将文件读入Perl程序,可以使用反引号调用wget
。
根据您 需要做的事情,您可能只需使用LWP::Simple的get
即可获得。
use LWP::Simple;
my $content = get("http://www.example.com/");
die "Couldn't get it!" unless defined $content;
更新:我不知道您可以使用Fuse和Fuse.pm在Perl中实现自己的文件系统。另请参阅Fuse::InMemory。
答案 1 :(得分:5)
tmpfs
。
重新编辑:你没有CPU限制,你不需要使用每台机器。您可以使用xargs -n SOME_NUMBER
拆分根网址列表,假设有几个。
但是,如果您热衷于共享内存,则可以设置群集内存缓存并将其安装在memcachefs的每台计算机上。
答案 2 :(得分:5)
如果你a)已经在使用Perl,b)想要下载HTML,并且c)解析它,我总是建议LWP和HTML::TreeBuilder。
答案 3 :(得分:2)
wget <url> -O -
将URL的内容写入标准输出,然后可以在内存中捕获。