La memorizzazione di file da 300k in una cartella può causare problemi?


1

Sto eseguendo la scansione di un sito Web di grandi dimensioni (oltre 200.000 pagine) utilizzando wget (esiste uno strumento migliore tra l'altro?). Wget sta salvando tutti i file in una directory.

La partizione è HFS (credo), causerà problemi se ho tutti i file in una directory? Supponendo che accederò a tutti solo dalla console (so che Finder ha problemi con dirs> file 5k).

O c'è forse un modo per creare una micro-partizione che sarebbe compressa e consentirebbe un accesso rapido e ottimizzato a questa quantità di file?


Quali flag stai usando con wget?
Majenko,

@Matt: -np, perché me lo chiedi?
Kolinko,

Di solito specifico -m - mantiene la struttura ad albero dei file per me allora - Non conosco il layout del sito che stai raschiando, ma ciò potrebbe ridurre il numero di file in ogni directory.
Majenko,

Risposte:


1

Nonostante la fattibilità del file system sottostante, REALMENTE non dovresti MAI memorizzare molti file in una directory. Quando arriva il momento di sfogliare i contenuti di quella directory, scoprirai rapidamente che c'è un enorme ritardo mentre il sistema operativo tenta di creare l'elenco dei file e così via. Ciò mette davvero a dura prova il sistema.

La maggior parte degli strumenti là fuori che fanno qualsiasi tipo di "archiviazione web" di solito costruiscono una struttura di directory simile al layout del sito web. Quasi tutti i siti Web non basano tutti i loro contenuti sulla directory principale ... ad esempio mydomain.com/document-1 ... avranno un po 'di logistica dietro tutto ciò che li divide in diversi percorsi (per una serie di motivi) cioè le immagini vanno su mydomain.com/images e le cose su goldfish sono su mydomain.com/goldfish/ ecc ...

Esistono diversi strumenti che possono e costruiranno questo tipo di struttura di directory per te. anche wget ha opzioni per scaricare un intero sito. Personalmente, ho usato " httrack " in passato e ha funzionato abbastanza bene. Ci sono anche opzioni da riga di comando per wget per scaricare anche un intero sito. Guarda l'opzione -r (ricorsiva). Assicurati solo di impostare il tuo elenco di domini in modo da non scaricare i collegamenti in modo continuo su più siti. Meglio fare qualche lettura sulla pagina man di wget .


2
Dipende da cosa usi per sfogliare le directory. Qualsiasi client gui sarà probabilmente cattivo (TM) ma sono felice su Linux in una shell bash.
PriceChild

@PriceChild Sono d'accordo ... tranne che non sono solo le GUI ... in genere ci sono cron job che periodicamente eseguono cose come updateb e usando ftp / sftp / etc ... possono anche aumentare la quantità di risorse inutilmente necessarie. È incredibile quanto può essere salvato semplicemente suddividendo una struttura di directory. Tieni presente ... In questo post ho usato un sacco di spalle (TM). Ci sono circostanze attenuanti ovviamente ... ma questo è semplicemente consigliato con una soluzione alternativa.
TheCompWiz,

qualche suggerimento su cosa usare invece? Vorrei avere un accesso facile e veloce ai file dalla console (ho intenzione di eseguire regexpes e simili su di essi) - Non voglio dividere i file in dir perché scrivere script di shell che analizzerebbero tutti i file sarebbe un dolore allora.
Kolinko,

1
1 parola. egrep. Quasi tutti gli strumenti * nix hanno un'opzione ricorsiva per cercare tutte le directory sotto una destinazione ... egrep -R some_word / some / path sarebbe in grado di cercare "some_word" in ogni directory e restituire i risultati appropriati. veloce e facile sono in genere contrari. Può essere veloce, ma difficile lavorare con - == OR == - facile ma lento. Sarebbe utile sapere di più su ciò che stai cercando di realizzare. Forse un'opzione migliore sarebbe quella di gettare il contenuto in un database indicizzato piuttosto che usare file raw ...
TheCompWiz

Hai ragione, egrep è quello di cui ho bisogno. Grazie, farò come dici tu :)
Kolinko,

-1

Wikipedia afferma che HFS ha un limite di file di 65535. Quindi se la tua partizione è davvero HFS, la colpirai.


Da Wikipedia:

Inoltre, il limite di 65.535 blocchi di allocazione ha comportato che i file avessero una dimensione "minima" equivalente a 1/65.535 di dimensione del disco. Pertanto, qualsiasi volume, indipendentemente dalle sue dimensioni, può contenere solo un massimo di 65.535 file.Inoltre, ad ogni file verrebbe assegnato più spazio del necessario, fino alla dimensione del blocco di allocazione. Quando i dischi erano piccoli, ciò aveva poca conseguenza, poiché la dimensione del blocco di allocazione individuale era banale, ma quando i dischi iniziarono ad avvicinarsi al segno da 1 GB, la minima quantità di spazio che un file poteva occupare (un singolo blocco di allocazione) divenne eccessivamente grande , sprecando quantità significative di spazio su disco. Ad esempio, su un disco da 1 GB, la dimensione del blocco di allocazione in HFS è 16 KB, quindi anche un file da 1 byte occuperebbe 16 KB di spazio su disco. Questa situazione è stata meno problematica per gli utenti che dispongono di file di grandi dimensioni (come immagini, database o audio) perché questi file più grandi hanno perso meno spazio in percentuale delle loro dimensioni. Gli utenti con molti piccoli file, d'altra parte, potrebbe perdere una grande quantità di spazio a causa della grande dimensione del blocco di allocazione. Ciò ha reso i dischi di partizionamento in volumi logici più piccoli molto interessanti per gli utenti Mac, poiché i piccoli documenti archiviati su un volume più piccolo occuperebbero molto meno spazio rispetto a se risiedessero su una partizione di grandi dimensioni. Lo stesso problema esisteva nel file system FAT16.


Credo che questo dipenda dalla versione di Mac OS in uso. Penso che OS X (tutte le versioni) utilizzi un nuovo sistema di partizionamento che mitiga questo problema.
Joshua Nurczyk,

5
Ti riferisci forse a HFS + ? Quello ha un numero massimo di file in migliaia di milioni.
Prezzo bambino

Sì, mi hai preso, ero troppo pigro per cercarlo. Questo mi insegnerà.
Joshua Nurczyk,

1
Sarei probabilmente pronto a scommettere 50p Merlin sta usando HFS + piuttosto che HFS anche se ... :-)
PriceChild

3
l'unità è di
300 GB
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.