Recupero tramite wget per la memoria e bypassando scrittura su disco
-
20-09-2019 - |
Domanda
E 'possibile scaricare i contenuti di un sito web, una serie di pagine HTML-dritto alla memoria senza scrivere su disco?
Ho un cluster di macchine con 24G di ogni installata, ma sto limitato da una quota disco a diverse centinaia MB. Pensavo reindirizzare l'wget
uscita a qualche tipo di struttura in memoria senza memorizzare il contenuto di un disco. L'altra opzione è quella di creare la mia versione di wget
ma può essere c'è un modo semplice per farlo con tubi
Anche ciò che sarebbe il modo migliore per eseguire il download in parallelo (cluster ha> 20 nodi). Non è possibile utilizzare il file system in questo caso.
Soluzione
‘- file di O’
‘- Uscita-document = file’
I documenti non verranno scritti i file appropriati, ma tutti saranno concatenati tra loro e scritti in un file. Se ‘-’ è usato come lima, i documenti vengono stampati sullo standard output, disabilitando la conversione collegamento. (Usa ‘./-’ per stampare un file chiamato letteralmente ‘-’.)
Se si desidera leggere i file in un programma Perl, è possibile richiamare wget
usando backticks.
A seconda di ciò che si davvero bisogno di fare, si potrebbe essere in grado di ottenere da solo utilizzando LWP :: 's get
.
use LWP::Simple;
my $content = get("http://www.example.com/");
die "Couldn't get it!" unless defined $content;
Aggiornamento: che avevo idea è possibile implementare il proprio sistema di file in Perl utilizzando fusibili e Fuse.pm . Vedi anche Fuse :: InMemory .
Altri suggerimenti
Se a) sta già utilizzando Perl, b) vuole scaricare HTML, e c) analizzarlo, mi raccomando sempre LWP e HTML :: TreeBuilder .
Stai root? Si potrebbe utilizzare un tmpfs
.
Re tua modifica: non sei CPU bound, non è necessario utilizzare ogni macchina. È possibile utilizzare xargs -n SOME_NUMBER
per dividere la lista di URL di root, assumendo ci sono diversi.
Ma se siete appassionati di condivisione di memoria, è possibile impostare un memcache cluster e montarlo su ogni macchina con memcachefs .
wget <url> -O -
scriverà il contenuto di un URL sullo standard output, che possono poi essere catturato in memoria.