하나의 디렉토리에 몇개의 파일까지 존재시킬수 있나요?

hohory의 이미지

리눅스에서는 하나의 디렉토리에 몇개 정도의 파일까지 남겨도 괜찮은지요?

무한개의 파일을 남겨도 괜찮은지요?

아니면, 대략 몇개 정도의 파일 이상을 남기면 os 자체적으로 문제가 생긴다든가... 하는게 있는지요?

참고로 해당 파일들을 저장하고, 추후에 열고 닫고, 읽고 쓰고 할 것입니다.

고수님들의 고견 부탁드립니다.

kslee80의 이미지

파일시스템에 따라서 틀립니다.

커널 내부에서는 동적 자료구조를 사용하기 때문에 상관 없습니다.

cinsk의 이미지

이런 종류의 문제는 쓰고 있는 파일 시스템에 따라 다른 것이지, 운영체제에 따라 달라지는 것이 아닙니다. (파일 시스템도 운영체제의 일부이긴 합니다만..) 즉, 쓰고 있는 파일 시스템이 ext3냐, reiserfs이냐, xfs이냐에 따라 다릅니다.

하지만, 대개의 파일 시스템은, 루트 디렉토리를 제외하고, 나머지 디렉토리에 들어갈 수 있는 파일의 갯수에 제한을 두지 않습니다. 하지만 (ext2처럼) 한 파일 시스템 자체에 들어갈 수 있는 전체 파일/디렉토리 갯수에 제한을 두는 경우는 있습니다.

또, 파일 시스템에 상관없이 생각해야 하는 것이 있는데, 바로 ARG_MAX의 크기입니다. 이 것은 운영체제에 따라 다릅니다 (예. Solaris는 10240, Linux는 0x20000). ARG_MAX는 프로그램이 시작할 때 환경 변수들의 내용과 프로그램에 전달된 인자들이 저장되는 공간의 최대 크기입니다. 따라서 한 디렉토리에 파일이 너무 많을 경우:

$ ls *.txt
ls: arg list too long
$ _

와 같이 에러가 발생할 수 있습니다. (물론 그렇다고 파일 저장이 실패한 것은 아닙니다. 이 경우에는 find . -exec {} 등을 써서 해결할 수 있습니다.) 하지만 한 디렉토리에 많은 파일을 저장하는 것은 좋지 않은 습관이기 때문에, 적당히 디렉토리 구조를 유지하는 것이 좋습니다.
좀 더 자세한 사항은 일반 운영체제 책 또는 특정 파일 시스템에 관한 문서를 보시는 것이 좋을 것 같습니다.

ext2에 대해서:
http://web.mit.edu/tytso/www/linux/ext2intro.html
http://www.nongnu.org/ext2-doc/ext2.html
http://www.tldp.org/LDP/tlk/fs/filesystem.html
http://www.linuxjournal.com/node/2151/

ARG_MAX에 대해서:
http://www.gnu.org/software/libc/manual/html_node/General-Limits.html#General-Limits
http://www.in-ulm.de/~mascheck/various/argmax/

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

superwtk의 이미지

예전에 실험을 해봤었는데, FAT32는 32767 (2^31 - 1) 개까지 가능했던걸로 기억합니다.

IDNed의 이미지

Quote:
예전에 실험을 해봤었는데, FAT32는 32767 (2^31 - 1) 개까지 가능했던걸로 기억합니다.

하나 더 추가하자면 FAT32는 루트디렉토리는 512개의 디렉토리/파일만 들어갈 수 있습니다.

Win98 설치 프로그램에서도 이 512개 스펙 체크루틴이 있다죠 :P

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.