E 'un problema di creare una directory per ciascun caricamento di file, in un'applicazione web su Linux / Unix?
-
19-09-2019 - |
Domanda
io sto facendo di caricamento file per una web-application (in esecuzione su Unix / Linux). Mi chiedo se ci sarebbe stato un problema se ho pensato di creare una nuova directory per ogni upload di file? Questo è l'approccio out-of-the-box per il Ruby on Rails plug-in "graffetta". Ho discutendo quello che il trade-off sono, o se forse non è solo una preoccupazione, se la distribuzione su un ambiente Linux / Unix.
Le opzioni sembrano essere:
- Una cartella per ogni file allegato - per come graffetta sembra funzionare out of the box
- Una cartella per ogni utente, forse (vale a dire se il servizio web ha più utenti con il loro conto proprio) - e poi uno avrebbe bisogno di aggiungere un po 'unicità al nome del file (forse il modello ID)
- Mettere tutti gli allegati in una cartella - ma questo è probabilmente andando troppo lontano l'altro modo
Domanda - Dovrei essere preoccupato per essere creato il numero di directory? E 'questo un problema per un O / S, se il servizio è stato popolare? Qualche consiglio per un sito web che permetteva agli utenti con il proprio conto separato per caricare i file, quale struttura potrebbe essere buono per quanto riguarda la loro memorizzazione? (Credo di aver scontato il concetto di memorizzazione dei file in mysql.)
Grazie
Soluzione
Supponendo Ext3 rigido formattato sotto Linux (la più comune).
Da ( http://en.wikipedia.org/wiki/Ext3 )
"C'è un limite di 31998 sub-directory per una directory, derivanti dal suo limite di 32000 collegamenti per inode. [13]"
Quindi, se ti ha colpito il limite di 32K arrivi, che non è così in alto, l'applicazione non riuscirà.
Altri suggerimenti
Non in quanto tale, ma avendo gazillions di cartelle in una directory (o lo stesso per i file) non è raccomandata (si tratta di un vero e proprio colpo di velocità).
Motivo: stringhe c-style
Una buona soluzione potrebbe essere quella di memorizzare le cose hierchially qualcosa di simile (sic?): / Path / to / / / / / file di usernamefirstletter nomeutente anno mese
Se si dispone di una partizione separata per la directory in cui i nuovi file / cartelle vengono creati, direi che non è un problema. Si può ottenere un problema se si utilizza un'altra partizione in quanto è possibile a corto di inode e / o spazio libero su disco, che può essere un male.
Utilizzo di una partizione separata sarebbe (in caso di un attacco DOS) solo fermare la vostra applicazione di funzionare correttamente e il sistema non farsi male in alcun modo.