Unix / Linux OS의 표준 및 / 또는 공통 디렉토리


25

Windows 세계에서 온 폴더 디렉토리 이름 의 대부분은 매우 직관적이라는 것을 알았습니다 .

  • \Program Files 프로그램에서 사용하는 파일을 포함합니다 (서프라이즈!)

  • \Program Files (x86) 64 비트 OS에서 32 비트 프로그램이 사용하는 파일을 포함합니다.

  • \Users(이전 Documents and Settings)에는 사용자의 파일, 즉 문서 및 설정이 포함됩니다

    • \Users\USER\Application Data 응용 프로그램 별 데이터를 포함

    • \Users\USER\Documents 사용자에게 속한 문서를 포함

  • \Windows Windows 자체의 작업에 속하는 파일을 포함합니다

    • \Windows\Fonts 서체 파일을 저장합니다 (서프라이즈!)

    • \Windows\Temp 글로벌 임시 디렉토리입니다

등등. 이 폴더들이 무엇을했는지 몰랐더라도 이름에서 정확하게 추측 할 수있었습니다.

이제 Linux를 잘 살펴보고 파일 시스템을 둘러 보는 방법에 대해 혼란스러워합니다.

예를 들면 다음과 같습니다.

  • /bin이진을 포함합니다. 그러나 그렇게 /sbin, /usr/bin, /usr/sbin, 아마 더 나는 약을 모르는. 어느 게 어느 건지?? 그들 사이의 차이점은 무엇입니까? 바이너리를 만들고 시스템 전체의 어딘가에 넣으려면 어디에 두어야합니까?

  • /media외부 미디어 파일 시스템을 포함합니다. 그러나 그렇습니다 /mnt. 그리고 그들 중 어느 것도 현재 내 시스템에 아무것도 포함하지 않았습니다. 모든 것 같습니다 /dev. 차이점이 뭐야? 어디처럼 내 하드 디스크의 다른 파티션입니다 C:D:그 윈도우에 있었다?

  • /home사용자 파일 및 설정을 포함합니다. 그 정도는 직관적이지만, 무엇이 들어가야 /usr합니까? /root파일과 설정을 사용하는 사용자 인 경우에도 어떻게 오나요 ?

  • /libDLL과 같은 공유 라이브러리를 포함합니다. 그러나 그렇습니다 /usr/lib. 차이점이 뭐야?

  • 무엇 이다 /etc ? 실제로 "et cetera"또는 다른 것을 의미합니까? 어떤 종류의 파일이 있어야합니까 (전 세계 또는 로컬)? 아무도 어디에 두어야할지 알지 못하는 것에 대한 포괄입니까, 아니면 특별한 유스 케이스가 있습니까?

  • 무엇 /opt, /proc그리고 /var? 그들은 무엇을 의미하며 무엇을 위해 사용됩니까? 나는 Windows *에서 그들과 같은 것을 보지 못했고, 그들이 무엇을위한 것인지 알 수 없습니다.

누구나 알고 싶은 다른 표준 장소를 생각할 수 있다면 질문에 자유롭게 추가하십시오. 잘하면 이것이 * nix 시스템에 익숙해지기 시작한 나와 같은 사람들에게 좋은 참고 자료가 될 수 있기를 바랍니다.

* 좋아, 거짓말이야. WinObj에서도 비슷한 것을 보았지만 정기적으로 그렇지는 않습니다. 그래도 여전히 리눅스에서 무엇을하는지 모르겠습니다.


1
좋은 학습 정신을 유지해 주셔서 감사합니다. 이 주제는 종종 논쟁의 여지가 있습니다. Windows와 Linux의 파일 시스템 구조 간의 근본적인 차이점에 대한 추가 설명은 이 질문에 대한 답변을 참조하십시오 .
Caleb

((이 사용자의 디렉토리 년 전 포함 않았기 때문에 그것은 backronym 아마 경우에도) "유닉스 시스템 리소스" "사용자"의 약자로 "USR"하지만 생각하지 마십시오 linux-training.be/files/books/html /fun/ch09s08.html ).
lgeorget

Windows (또는 Mac OS X)에 대해 Unix / Linux / etc의 암호화 된 디렉토리 이름을 정당화하려는 시도는 없습니다. 그것은 단지 방법입니다.
앤드류 울프

2017 년 현재 Windows 폴더 구조는 완전히 엉망입니다. C:\Program Files, C:\ProgramData, %HOME%\AppData\Local, %HOME%\AppData\LocalLow, C:\Windows\SystemApps... 하나는 Windows에서 실행 파일을 찾을 수있는 모든 예. 그리고 구성 파일과 레지스트리에 대해서도 이야기하지 않을 것입니다. 더 우울해지기를 원하지 않습니다. 추신 : 저는 주로 Windows에서 일합니다.
rsenna

답변:


29

Linux 배포판은 FHS를 사용합니다. http://www.pathname.com/fhs/pub/fhs-2.3.html

또한 시도 할 수 있습니다 man hier.

나는 당신의 질문에 대한 답을 내 머리 위로 요약하려고 노력할 것이지만, FHS를 읽는 것이 좋습니다.

  • / bin은 수퍼 유저가 아닌 시스템 바이너리 용입니다.
  • / sbin은 수퍼 유저 (루트) 시스템 바이너리 용입니다.
  • / usr / bin 및 / usr / sbin은 각각 중요하지 않은 공유 비 수퍼 유저 또는 수퍼 유저 바이너리 용입니다.
  • / mnt는 파티션을 임시로 마운트하기위한 것입니다
  • / media는 많은 이동식 미디어를 한 번에 마운트하기위한 것입니다
  • / dev는 시스템 장치 파일을 포함합니다. 이건 긴 이야기다 :)
  • / usr 폴더 및 해당 하위 폴더는 다른 시스템과 공유 할 수 있으므로 한 곳에 설치된 동일한 프로그램 / 파일에 액세스 할 수 있습니다. / usr은 일반적으로 별도의 파일 시스템에 있으므로 시스템을 온라인 상태로 만드는 데 필요한 바이너리가 포함되어 있지 않습니다.
  • / root는 별도의 파티션 / 하드 드라이브 / 서버에있을 수있는 다른 디렉토리를 마운트하지 않고 시스템을 온라인 상태로 만들어야 할 수 있으므로 별도입니다.
  • 예, / etc는 "et cetera"를 나타냅니다. 로컬 시스템의 구성 파일이 거기에 저장됩니다.
  • / opt는 다운로드 / 컴파일하는 프로그램을 설치할 수있는 곳입니다. 이렇게하면 모든 파일을 한 곳에 두어 나머지 시스템과 분리 할 수 ​​있습니다.
  • / proc에는 커널 및 실행중인 프로세스에 대한 정보가 포함되어 있습니다.
  • / var는 로그, 메일, 웹 페이지 등과 같은 가변 크기 파일을 포함합니다.

시스템에 액세스하려면 일반적으로 / var, / opt, / usr, / home이 필요하지 않습니다. 시스템에서 잠재적으로 가장 큰 디렉토리 중 일부.

일부 사람들이 사용하지 않는 즐겨 찾기 중 하나는 / srv입니다. http / ftp / samba와 같은 서비스를 통해 호스팅되는 데이터를위한 것입니다. 나는 / var이 이것을 많이 사용하는 것을 보았습니다. 실제 그 목적은 아닙니다.


구체적인 질문을 다루는 좋은 개요. 일부 배포판 /home/users/username은 사용자와 /home/services/servicename언급 한 내용 /src에 사용됩니다. 나는 파티션을 다목적으로 사용할 수 있다는 점에서 이것이 더 잘 작동한다고 생각합니다. 자체 파티션에 배치하거나 동일한 파티션과 사용자 데이터를 사용할 수 있습니다.
Caleb

링크와 설명에 +1 해 주셔서 감사합니다. :)
Mehrdad

/ usr에는 운영 체제에있는 응용 프로그램 및 / 또는 타사 파일과 관련된 파일이 있어야합니다. 본질적으로 공유 할 수 없습니다! LSB는 이들을 / opt에 보관한다고 주장합니다. 반면에 / usr / share는 다른 아키텍처 / OS 버전의 컴퓨터에서 공유 할 수있는 파일을 포함 할 수 있습니다. 이것들은 모두 단지 컨벤션입니다! 완전히 다른 구조를 사용하는 것이 가능합니다 (많은 노력이 필요하지만). 오라클의 최적의 유연한 아키텍처와 같은 - 다른 규칙 불구하고있다
symcbean

1
유닉스에 대해 명심해야 할 또 다른 사항은 " 모든 것이 파일 이다"라는 개념입니다 . 예를 들어, / proc의 내용은 파일과 디렉토리처럼 보이지만 내용은 커널에 액세스 할 때 실제로 동적으로 만들어집니다. 이는 동일한 도구 (ls, cat 등)를 사용하여이 정보에 액세스 할 수 있음을 의미합니다.
KeithB

1
@symcbean FHS에서 : "... / usr은 공유 가능한 읽기 전용 데이터입니다. 즉, / usr은 다양한 FHS 호환 호스트간에 공유 가능해야합니다." 분명히 일부 파일은 아키텍처에 따라 다르며 일부 배포판에서는 디렉토리 계층 구조가 크게 다릅니다. 해결책은 좋은 관리자처럼 숙제를하는 것입니다 :)
bhinesley

18

나는 그들 모두가 의미하는 바에 대해 대답하지 않지만 (다른 사람들이 가지고있는) 역사적인 맥락을 조금 제시합니다.

우선, 유닉스는 종이 테이프와 300 보드 하드 코딩 된 터미널을 메인 프레임으로 사용하던 시절이 40 년에 가까워지고 있다는 점을 기억하십시오 (Windows XP 시스템은 10 살에 가깝습니다). 타이핑 속도가 느리고 타이핑 효율이 다른 많은 고려 사항보다 중요했습니다. 이것이 매우 짧은 기본 명령의 이유입니다 (예 : 'ls', 'cat', 'cc', 'dd'등). 디렉토리 구조도 마찬가지입니다. 명령이 3 ~ 4자를 넘으면 이름이 너무 길다는 생각이 들었습니다.

대부분의 명령은 / bin에 있고 모든 장치 파일은 / dev에 있었기 때문에 / usr 디렉토리에는 원래 사용자의 홈 디렉토리가있었습니다. 나중에 부팅 시간을 단축하기 위해 기본 드라이브 (루트 파일 시스템 '/')를 작게 만드는 것으로 생각되었습니다. 따라서 / usr / bin, / usr / include 및 / usr / lib와 같은 다른 구조가 나타 났으며, 여기서 / usr은 별도의 "드라이브"였습니다. 훨씬 후에는 / home에 사용자의 홈 디렉토리가 있고 다른 드라이브가 있다고 생각되었습니다. 그리고 그보다 훨씬 늦게 / var (가변 / 변경 가능)를 갖습니다. / etc 디렉토리는 'et cetera'를 의미했으며 모든 시스템 구성 파일의 포괄 위치였습니다. / mnt는 드라이브 (종종 백업 드라이브)에 액세스하기위한 임시 장소로 사용되었습니다. / opt, / proc 및 / media와 같은 디렉토리는 훨씬 후에 나왔습니다.

/ usr / local 및 / net과 같이 많은 부분이 빠져 있지만 이름이 왜 직관적이지 않은지에 대한 간단한 설명을 제공합니다.


2
+1 나는 역사적 맥락을 좋아한다. 그것은 나의 두뇌를 조직한다. :) 시간을내어 작성해 주셔서 감사합니다!
Mehrdad

5

여기에서 이미 언급했듯이 Linux 배포판은 주로 FHS를 사용합니다 . 튜토리얼과 같은 개요를 보려면 여기 를 참조 하십시오 . 특히 Windows 사용자에게 적합합니다.

참고로, Windows 디렉토리 직관적이고 피상적으로 보입니다 . 그러나 프로그램의 설정이 어디에 있는지 *.ini, 프로그램 폴더 의 파일, Documents and Settings\User( \Application Data또는 \Local Settings\Application Data) 또는 악명 높은 레지스트리 의 파일 로 어디에서 물어 볼까요? 마이크로 소프트조차도 모릅니다. 그리고 우리는 계속해서 갈 수 있습니다.


1
폴더의 Windows 7 이름이 더 좋다고 생각합니다. 즉, AppData \ Roaming vs. AppData \ Local-여기에는 데이터 종류가 설명되어 있습니다. 구성 정보에 관해서는 , 볼 때 어디에 배치해야할지 잘 알고 있다고 생각 하지만 잘 설명 할 수는 없습니다. :)
Mehrdad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.