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:

  1. Uma pasta por anexo de arquivo - de acordo com o modo como o PaperClip parece funcionar fora da caixa
  2. 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)
  3. 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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top