Unix 파일 시스템 구조의 장점은 무엇입니까?

Unix 파일 시스템 구조의 장점은 무엇입니까?

Linux(예: Debian/Gnu Linux)에 애플리케이션을 설치하면 해당 애플리케이션의 파일이 파일 시스템의 다양한 디렉터리에 복사됩니다.

일부 스크립트가 들어갑니다/usr/공유../usr/로컬다른 파일을/var../통나무..등/등.

나에게는 파일 시스템에 대해 조금 배웠고 대부분의 디렉토리에는 특정 목적을 위한 파일이 보관되어 있기 때문에 그것은 중요하지 않았습니다. 이는 "한 가지 일을 하고 그것을 잘하라"는 유닉스 철학과 매우 일치합니다.

하지만 내 질문은이러한 디렉토리 구조의 장점은 무엇입니까?아니면 단지 옛날 유닉스 시대의 유물일 수도 있습니다. (예: 모든 응용 프로그램의 파일이 특정 "폴더"에 있는 단일 창 사용과 비교)

답변1

어떤 조직을 선택하든 어떤 일은 더 쉬워지고 어떤 일은 더 어려워질 것입니다.

Unix 방식( bin, man, lib/python, ...)으로 파일을 유형별로 정리하면 파일 작업이 더 쉬워집니다. 명령을 실행하려는 경우 어떤 패키지가 제공하든 관계없이 해당 명령을 찾을 수 있는 위치를 알 수 있습니다. 문서를 검색하고 싶다면 모든 것이 한 곳에 있습니다. 프로그램이 Vim 구문 강조 모듈, zsh 완성 또는 Python 바인딩을 제공하는 경우 관련 파일은 vim/zsh/python에서 찾을 수 있는 위치에 있습니다.

Unix는 또한 사용 패턴에 따라 파일을 구성합니다. 구성 파일이 입력되고 /etc, 정상 작동 중에 변경되지 않는 파일이 입력되고 /usr, 자동으로 변경되는 파일이 입력됩니다 /var. 사용자 데이터는 보호됩니다 /home. 이는 구성 관리(구성 내용 /etc및 설치된 패키지 목록 관리)에 유용합니다. 백업 전략을 정의하는 것도 유용합니다. 그 내용은 /etc매우 중요하며 /home그 내용은 /usr쉽게 다시 다운로드할 수 있습니다.

Unix 접근 방식의 주요 비용은 여러 디렉터리에 분산된 소프트웨어를 설치하는 것입니다. 그러나 최신 UNIX 시스템에는 어쨌든 패키지 관리자가 있습니다. 많은 디렉터리에 있는 파일을 관리하는 것은 결코 가장 복잡한 작업이 아닙니다(종속성을 추적하는 것은 매우 유용하지만 훨씬 더 어렵습니다).

윈도우와 비교해 보세요. Windows는 패키지 관리 없이 시작되었으며 각 응용 프로그램은 어딘가에 자체 디렉터리를 생성했습니다. 프로그램, 정적 데이터, 사용자 데이터 등 모든 파일은 일반적으로 해당 디렉터리에 있습니다. 단, 때때로 프로그램은 충돌하는 라이브러리("DLL 지옥")에 관계없이 공통 시스템 디렉터리에 배치됩니다. 시간이 지남에 따라 Windows는 다중 사용자가 되었으며 시스템 디렉터리에서 사용자 디렉터리를 분리해야 했습니다. Windows는 또한 구성 파일(Unix용 /etc)과 일부 시스템 데이터(Unix용 )에 대한 /var중앙 위치인 레지스트리를 만듭니다 . 이는 주로 패키지 관리가 부족하고 단일 사용자 시스템으로서의 초기 기록이 없기 때문에 역사적인 유물에 가깝습니다. Windows 접근 방식에는 여러 가지 제한 사항이 있습니다. 즉, 소프트웨어 패키지가 쉽게 상호 작용하는 것을 허용하지 않습니다. 예를 들어, 설치된 대부분의 소프트웨어는 기본 명령 검색 경로에 표시되지 않으므로 어떤 형태의 스크립팅과도 제대로 상호 작용하지 않습니다. 설치 프로그램은 일반적으로 특별한 경우로 메뉴 아이콘을 제공합니다. 이는 별도의 시스템 디렉토리(Unix와 유사!)에 배치됩니다.

Unix 접근 방식의 한 가지 제한 사항은 여러 버전의 패키지가 쉽게 공존할 수 없다는 점이며, 이는 패키지를 업그레이드할 때 특히 문제가 됩니다. 두 가지 장점을 최대한 활용하는 방법은 각 패키지를 자체 디렉터리(structure /opt)에 압축을 풀고 패키지 디렉터리에서 구조로의 심볼릭 링크 포리스트를 만드는 것입니다 /usr. 소프트웨어란 바로 이런 것이다가게하다.

요약하면 Unix 접근 방식을 사용하면 파일 작업, 관리 및 패키지 상호 작용이 더 쉬워지지만 어쨌든 이것이 더 좋습니다. Windows 접근 방식을 사용하면 패키지를 수동으로 관리하기가 더 쉽지만 유용한 기능을 얻으려면 Unix 모델로 이동해야 합니다.

답변2

내 생각에 가장 쉽게 떠오르는 장점은 유사한 파일이 동일한 디렉터리 트리에 있다는 것입니다. 구성 파일은 에 있고 /etc, 로그 파일 및/또는 런타임 추적 파일은 에 있고 /var/log, 실행 파일은 에 있고 /usr/bin, 런타임 정보(예: PID 파일)는 에 있습니다 /var/run. NTP 구성 파일에 무엇이 있는지 알고 싶으십니까? 일부 프로그램이 실행 파일을 모니터링 하여 기존 파일 시스템 바이러스가 /etc감염 ls ntp*되지 않도록 하시겠습니까? 모든 것은 내부에 있으므로 /usr/bin관찰 /usr/local/bin해야 합니다.

제가 생각하는 두 번째 장점은 유닉스 스타일의 구성이 데이터와 실행 파일의 분리를 촉진한다는 것입니다. 실행 파일은 템플릿이 있는 곳( /usr/share아마도)과 데이터가 있는 곳에서 멀리 떨어진 디렉터리에 있습니다 . 이러한 분리는 Unix/Linux/*BSD가 Windows나 이전 Pre-OSX Mac보다 파일 시스템 바이러스에 더 강한 이유일 수 있습니다.

답변3

위에서 언급하지 않은 주요 이점 중 하나와 이 구조의 역사적 이유는 부팅 프로세스의 여러 단계에서 사용 가능한 여러 볼륨/디스크를 물리적으로 격리한다는 것입니다.

또 다른 이점은 디렉터리 데이터에 최적화된 볼륨/파일 시스템에 다양한 디렉터리를 마운트할 수 있다는 것입니다. 예를 들어 tmpfs; /run/sbin읽기 전용 미디어/ROM의 경우입니다.

또한 볼륨은 로컬 또는 원격, 개인 또는 공유일 수 있습니다.

마지막으로, 참조애플리케이션 카탈로그UNIX(OS X .app)의 경우 Linux(ROX 데스크탑) 및 Windows(휴대용 애플리케이션 웹사이트).

답변4

응용 프로그램의 공유 파일과 구성 파일이 어디에 있는지 추측하기 쉽다는 점을 제외하면 이 레이아웃에는 실제로 이점이 없습니다. UNIX는 오랫동안 이 레이아웃을 유지해 왔으며 이를 깨는 것은 매우 어렵습니다. 그러나 일부 UNIX 배포판은 모델을 변경했습니다. 이는 레거시 목적으로만 이전 위치를 제공하는 반면 다른 응용 프로그램은 자체의 작은 디렉터리/패키지에 번들로 제공됩니다. Mac OS 프로그램) ).

파일 시스템 규칙이 제공하는 가장 중요한 것은 사람들이 파일을 찾을 위치(수동 또는 코드)를 알 수 있도록 하는 규칙입니다. 한 가지 방식이 다른 방식보다 더 나은 실제 기술적 이유는 없습니다.

관련 정보