É um problema criar um diretório para cada upload de arquivo, em um aplicativo da Web no Linux/Unix?
-
19-09-2019 - |
Pergunta
Estou fazendo o arquivo-upload para obter uma aplicação da web (em execução no Unix/Linux). Gostaria de saber se haveria uma preocupação se eu planejasse criar um novo diretório para cada upload de arquivo? Esta é a abordagem pronta para uso para o plug-in Ruby on Rails "PaperClip". Debito o que são as trade-offs, ou se talvez não seja uma preocupação, se implantando em um ambiente Linux/Unix.
As opções parecem ser:
- Uma pasta por anexo de arquivo - de acordo com o modo como o PaperClip parece funcionar fora da caixa
- Uma pasta por usuário talvez (ou seja, se o serviço da web tiver vários usuários com sua própria conta) - e então seria necessário adicionar alguma singularidade ao nome do arquivo (talvez o ID do modelo)
- Coloque todos os anexos em uma pasta - mas isso provavelmente está indo muito longe
Pergunta - Devo me preocupar com o número de diretórios sendo criados? Isso é um problema para um O/S se o serviço era popular? Algum conselho para um site que permitisse que os usuários com sua própria conta separada enviem arquivos, que estrutura pode ser boa em relação a armazená -los? (Acho que descontentei o conceito de armazenar arquivos no MySQL.)
Obrigado
Solução
Assumindo a unidade formatada EXT3 no Linux (a mais comum).
A partir de (http://en.wikipedia.org/wiki/ext3)
"Há um limite de 31998 subdiretos por diretório, decorrente de seu limite de 32000 links por inode. [13]
Portanto, se você atingir o limite de uploads 32K, o que não é tão alto, seu aplicativo falhará.
Outras dicas
Não é como tal, mas não é recomendável ter gazilhões de pastas em um diretório (ou o mesmo para arquivos) (é um golpe real para acelerar).
Motivo: Strings de estilo C
Uma boa solução seria hierquialmente (sic?) Armazene as coisas como:/path/to/userNamefirstletter/nome de usuário/ano/mês/arquivo
Se você tiver uma partição separada para o diretório em que os novos arquivos/diretórios são criados, eu diria que não é um problema. Pode ter um problema se você usar outra partição, pois pode ficar sem inodos e/ou espaço livre em disco que pode ser ruim.
O uso de uma partição separada (no caso de um ataque do DOS) apenas impediria que seu aplicativo funcione corretamente e o sistema não se machucará de forma alguma.