Linux/Unix의 웹 응용 프로그램에서 각 파일 업로드에 대한 디렉토리를 작성하는 데 문제가 있습니까?

StackOverflow https://stackoverflow.com/questions/1503356

문제

웹 응용 프로그램 (UNIX/Linux에서 실행)을 위해 파일 Upload를 수행하고 있습니다. 각 파일 업로드에 새 디렉토리를 만들 계획이라면 우려 사항이 있는지 궁금합니다. 이것은 Ruby on Rails 플러그인 "Papricclip"의 기본 접근 방식입니다. Linux/Unix 환경에 배치하는 경우 트레이드 오프가 무엇인지, 아마도 우려가 아닌지에 대해 토론합니다.

옵션은 다음과 같습니다.

  1. 파일 첨부 파일 당 하나의 폴더 - 페이퍼 클립이 상자에서 작동하는 방식에 따라
  2. 사용자 당 하나의 폴더 (즉, 웹 서비스가 자체 계정을 가진 여러 사용자가있는 경우) - 파일 이름에 독창성을 추가해야합니다 (아마도 모델 ID).
  3. 모든 첨부 파일을 한 폴더에 넣습니다. 그러나 이것은 아마도 다른 방법으로 너무 멀리 진행되고 있습니다.

질문 - 생성되는 디렉토리 수에 대해 걱정해야합니까? 서비스가 인기가있는 경우 O/S의 문제입니까? 자신의 별도 계정을 가진 사용자가 파일을 업로드 할 수 있도록하는 웹 사이트에 대한 조언은 파일을 저장하는 것과 관련하여 어떤 구조가 좋을까요? (MySQL에 파일을 저장하는 개념을 할인했을 것 같습니다.)

감사

도움이 되었습니까?

해결책

Linux에서 Ext3 형식 드라이브를 가정합니다 (가장 일반적).

에서 (http://en.wikipedia.org/wiki/ext3)

"inode 당 32000 링크의 한계에서 비롯된 한 디렉토리 당 31998 하위 디렉토리의 한계가 있습니다. [13].

따라서 32k 업로드의 한계에 도달하면 그다지 높지 않으면 응용 프로그램이 실패합니다.

다른 팁

그렇지는 않지만 하나의 디렉토리 (또는 파일의 경우 동일)에 폴더가 많은 것을 권장하지 않습니다 (실제로 속도에 맞는 히트).

이유 : C 스타일 스트링

좋은 솔루션은 계층 적 (sic?)을 저장하는 것입니다 :/path/to/usernamefirstletter/username/year/month/file

새 파일/디렉토리가 생성되는 디렉토리에 대한 별도의 파티션이 있다면 문제가되지 않는다고 말합니다. Inodes 및/또는 무료 디스크 공간이 떨어질 수 있기 때문에 다른 파티션 만 사용하면 문제가 발생할 수 있습니다.

별도의 파티션을 사용하면 (DOS 공격의 경우) 응용 프로그램이 올바르게 작동하지 않으면 시스템이 어떠한 방식 으로든 상처받지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top