Mac文件系统结构

求收藏求转发!

看到了这篇感觉说的非常详细,有被科普到

Peace and love

在OS X的系统中,不再有Windows用户熟悉的C盘、D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范。MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采用GPT。这种EFI+GPT的方式相比传统的BIOS+MBR的方式有很多好处,具体可以参考我之前写的博客。

1 硬盘分区

默认情况下,MAC OS X把硬盘分成了3个GPT分区。第一个就是GPT标准要求的ESP分区,这个分区很小,200MB,FAT文件系统格式。按照EFI惯例,应该用来存放操作系统的引导程序。但是苹果没有遵守这个惯例,它的引导程序boot.efi并没有存放在ESP中,这个分区只是被苹果用来存放升级固件的文件。第二个分区就是OS X的系统分区了,它占用了大部分磁盘空间,用来存放整个OS X系统和用户数据,分区文件系统格式为HFS+。第三个分区是系统恢复分区,里面存放了一个精简的OS X系统,用来完成系统恢复、安装等任务,类似于WindowsPE。默认情况下,OS X自带的磁盘工具并不能显示ESP分区和恢复分区,需要开启DEBUG菜单才可以。开启方法为:

defaults write com.apple.DiskUtility DUDebugMenuEnabled 1

然后重启“磁盘工具”,菜单栏里会多出一项“调试”菜单,选中此菜单中的“显示所有分区”菜单项,就会在左侧显示出磁盘的隐藏分区。如下图所示:

 

《Mac文件系统结构》

此时, ESP分区和恢复分区都显示为灰色,因为此分区虽然存在,但是没有被挂载到系统目录树中,右键点击分区,选择挂载就可以正常显示了,而且可以直接在Finder中查看这个分区。

其中ESP分区的目录结构如下:

《Mac文件系统结构》

2 OS X系统分区的目录结构

Mac OS X已经是被认证的Unix系统,所以其目录结构基本符合Unix系统目录结构。但是有很多目录在Finder中并看不到,这是因为这些目录的被设置了隐藏属性,我们可以在终端窗口中利用unix命令查看。

《Mac文件系统结构》

可以看出,根目录下存在着传统的unix系统目录,也存在着一些os x特有的目录。

2.1 符合unix传统的目录

  • /bin 传统unix命令的存放目录,如ls,rm,mv等。
  • /sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等。
  • /usr 第三方程序安装目录。
  • /usr/bin, /usr/sbin, /usr/lib,其中/usr/lib目录中存放了共享库(动态链接库).
  • /etc. 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
  • /dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
  • /tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
  • /var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。

这些标准的Unix目录在Finder中并不可见,如下图所示:

《Mac文件系统结构》

 

2.2 os x特有的目录

OS X系统中,除了标准的unix目录外,还增加了特有的目录。

  • /Applications 应用程序目录,默认所有的GUI应用程序都安装在这里;
  • /Library 系统的数据文件、帮助文件、文档等等;
  • /Network 网络节点存放目录;
  • /System 他只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
  • /Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
  • /Volumes 文件系统挂载点存放目录。
  • /cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
  • /private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

3 用户的资料应该存放到什么目录?

对于普通OS X用户来说,对系统目录树结构的理解与否并不影响正常使用系统,以至于OS X把很多目录都故意隐藏,让普通用户通过Finder不能看到。用户真正关心的是把自己的资料存放到哪里更加方便和安全。Windows用户通常会把个人资料存放在非系统盘(C)的其他分区中,因为Windows系统一旦死掉,C盘的内容很可能就找不回来了。Mac OS X的用户则不用担心这个问题,OS X发生崩溃和不能启动的概率实在是太低了,就算是系统出现问题,由于用户目录和系统目录是彼此独立的,所以也容易找回。所以通常情况下,用户直接把资料存放在自己的用户目录中,OS X也建议用户这么做,并且已经为用户准备好了常用的子目录,如下图所示:

《Mac文件系统结构》

应用程序,文档,下载,音乐,电影,图片,公共,对于普通用户这些子目录也就够用了,当然如果你觉得不够,可以自己随便添加,例如上图中就增加了Work目录来存放一些工作的项目文件,家庭照片视频则用来存放来自手机、Dv等等的照片视频资料。

 

从Windows过来的用户,如果还想保持原来的习惯,把用户文件和系统文件存放在不同的分区中,那么就需要利于“磁盘工具”,重新分区,把系统分区调整小一些,留出空间建立一个新的HFS+分区,使用的时候把这个分区挂载到系统目录树上就可以使用了。

 通常我们在启动盘下面都只能看到应用程序、资源库、系统、用户这4个目录。但其实还有很多的隐藏目录,如bin、sbin之类的,这些都是系统的一些资源,一般是不用普通用户去访问,是些比较重要的系统文件及配置文件。
所以我这里就只是探讨一下通常在Finder中可以触及的文件项目和资源。

来了解一下OS X系统的几大组成部分:
文件系统区域:
        作为了一个多用户的操作系统,控制系统资源的访问对于保证系统的稳定性是非常重要的。通过目录的设置,由当前用户的操作权限来决定该用户对每部分资源的访问。
在OS X系统中,存在以下4个文件系统区域:
        User:这个区域包含了登录到系统的用户可供使用的特定资源。该区域由用户的主目录来定义,在这个区域中,用户具有完全的控制权限。
        Local: Local区域包括如文件、程序这些被系统中所有用户共享的资源,但它不是系统运行所必须的。Local区域没有一个相应的单独的目录,它包含于启动卷宗的多个目录中。具有系统管理员权限的用户可以添加、删除或修改此区载的项目。
        Network:此区域包含了本地局域网中可被所有用户共享的资源,如文件或应用程序。该区域的代表项目在网络文件服务中的位置,并受网络管理员的控制。
        System:包含由Apple安装的系统软件。这此资源是系统正常运行所必须的,位于启动卷宗中,在该区域中,用户不允许添加、删除或更改这些资源。
用户区域包含指定给一个单独的用户的资源。由当前用户的个人目录来表示。每个Mac OS X系统用户必须有一个账号,在文件系统中给每个用户账号指定一个目录空间。目录中包括了用户的应用程序、资源以及文档。用户个人目录以用户账号的短名称来命名,并且是唯一的。
用户区域可以让用户为自己定义一个合理的工作环境,当用户登录时,Finder将恢复用户的工作环境,并按预置设置为用户上次使用时的状态。同样的,应用程序及其它系统软件按程序预置、网络设置、email设置、字体设置及其它设置来进行恢复。
用户的个人目录的位置依赖于用户的账号。如果用户账号是本地账号,那么用户的个人目录则位于启动卷宗的”User”目录中,如果是一个网络账号,则个人目录位于网络服务器中。
无论用户的个人目录实际位置在哪里(实际上,我们还是可以通过终端命令更改个人目录的实际位置的),OS X都使用”~”字符来代表当前登录用户的个人目录。这个符号可以与其它路径来组合使用。

~ 当前用户目录的顶级目录,相当于”/User/当前用户名”这个目录
~/Library/Fonts 当前用户个人目录中的字体储存位置
~Steve 用户Steve的个人目录。
说明:这里我们需要注意的是,终端或系统中,我们其实都可以多重登录的,因此,在使用”~”的时候,连接的是“当前登录用户“的个人目录。所以,当你登录为不同的用户时,”~”所指的位置并不相当。

这里我们列出的是个人目录下一些常见的目录:
Applications 包含一些只有当前用户可以使用的程序,比如我们安装了一个程序,安装时选Applications,应用程序将会默认安装到这里!
Desktop:包含当前用户显示在Finder桌面上的所有项目。
Documents:用户个人的一些文档。经常会包含一些程序使用的文件或者下载的文件,以及程序安装的纪录文件。
Library:包括应用程序设置、预置及其它用户指定的系统资源或设置(具体内容将在下一章中进行说明)。
Movies:QuickTime或其它格式的影片
Music:数字音乐文件(如.aiff, .mp3, .m4p或其它格式),包括iTunes自动倒入的歌曲。
Pictures:图片文件,包括iPhoto自动导入的数码相机中的图片
Public:你可以把需要与其它用户共享的文件放在这个目录中,默认状态下,这个目录可以被其它所有用户访问。
Sites:用户的个人站点网页文件。在被其它用户访问之前,你必须在“系统预置-共享-Web共享“中打开共享。
当新建账号时,”Applications”目录并不会自动添加到该用户的个人目录中。用户可以自已手工建议一个”Applications”,并把自己的程序放在该目录中,系统会自动搜索该目录中的项目。
在’/User’目录中包含一个叫”Shared”的子目录,这个目录可以被本地的所有用户访问(不过请不要把应用程序放置在该目录中),所有用户都可以从该目录中读取或写入文件,用于本地用户的文件交换及共享。
本地区域包括本地计算机所使用的资源,但它不是系统运行所必须的。比较典型的包括:应用程序、实用工具、自定义字体、自定义的启动项目以及应用程序 全局设置。在”Applications” 以及 “Library”目录中也包含了部分资源,这些资源仅代本地用户使用,而网络用户则无法访问。
如果希望本地所有用户共享资源,那么系统管理员可以安装资源到本地区域,苹果公司开发的应用程序都安装在”/Applications”及 “/Applications/Utilities “目录中,第三方的程序及工具也可以安装在这些目录中。其它的系统资源,如字体、预置以及插件放置在”/Library”相应的子目录中。
网络部分
        网络区域包括本地局域网中的的资源。网络用户可以访问程序、文档以及其它资源,包括AplleShare及 Web共享。

/Network/Applications 包括可以被本地局域网中其它用户运行的一些应用程序。
/Network/Library 包含如:插件,音频文件, 文档, 框架, 色彩,及字体这些供本地局域网用户使用的资源.
/Network/Servers 包含本地局域网中提供的NFS文件服务的连接
/Network/Users/ 包括所有本地网用户的个人目录。这是个人目录默认的位置。个人目录也可以存储在其它服务器中。
系统区域
        系统区域包括了Mac OS X运行所必须的资源,它全部位置于启动盘的”/System”目录中。这些资源由苹果公司提供并只有’root’用户可以修改其内容。管理员用户以及程序将不会安装任何资源在这个目录或直接修改其内容。
默认时,”/System”仅包括一个”Library”子目录,这个子目录包含了许多与其它Library目录相同类型的资源。
请不要手工添加、删除或者修改此目录的资源,否则有可能导致系统无法正常启动。
Library目录
        Library目录被用来存储程序及系统特殊资源的一个特殊目录。每个文件系统都有它自己的Library目录。通常,程序可以用它来存储内部数据或临时文件,但不会存储程序本身或用户的数据文件。
它包括很多标准的子目录,系统通常会认为已经存在这些标准的。所以请不要删除Library中的子目录。当然,程序也可以创建新的子目录来储存程序的特殊数据。
Library可以位于启动盘根目录及用户的个人目录中。虽然位置不同,内容及作用大体相同。
唯一的区别就在于:根目录下的Library是本机所有用户的共同设置,而个人目录中的Library则只是该用户的设置。
下面我们将列出在Library常见的一些子目录,你可以通过这个说明来了解这些目录到底有何用途。从而来决定你要作什么。
Library目录中的子目录:
Application Support :包括程序的特殊数据以及支持文件,如第三方插件,帮助程序、模板以及被程序使用但不允许操作的附加资源。通常所有的项目都放置在以程序命名的目录中。例如Adobe公司的程序,都将放在名叫“Adobe“的子目录中,而苹果公司的程序支持则放置在“Apple“这个子目录中。
Assistants:包括程序用来帮助用户设置或完成其它任务的资源。
Audio:包括音频插件及设备驱动。
Caches:再生所必须的缓存数据。
ColorPickers:采集色彩时所依赖的模式的资源。例如HLS或RGB。
ColorSync:色彩管理预置及脚本。
Components:系统组织和功能扩展。
Contextual Menu Items:附加的系统级关联菜单插件,如阿拉丁的解压缩关联菜单、iGetter的关联菜单。
Desktop Pictures:桌面图片目录。
Documentation:文档及用户和管理员使用的苹果帮助文件包(也有的在”Help子目录中”)。
Extensions:包括设备驱动及其它核心功能。类似于OS 9下的”功能扩展”目录。
Favorites:包括经常访问的目录、文件或网站的替身,仅存在于个人目录的库目录中。
Fonts:显示和打印用的字体文件
Frameworks:框架和共享的资源库,开发者可能会安装自己的框架或资源在该目录中。
Image Capture:通常是扫描仪的驱动。
InputManagers:输入法管理,
Internet Plug-ins:网络浏览器使用的插件、库及过滤器。如Flash插件、Realplayer插件。
iTunes:第三方的iTunes的插件及库,
Java:如果你安装了Java,那么就会有这个目录,包括了Java的一些功能扩展及其它资源。
Keyboard Layouts:键盘布局
Keychains:系统中各个钥匙串的内容。
Logs:控制台及系统服务的记录文件,你可以通过:应用程序-实用程序-控制台来查看。
Modem Scripts:调制解调器脚本,也就是猫的驱动了。
Mail:用户的电子邮件内容,这只存在于每个用户的个人目录的库目录中。
Perl:Perl程序的功能扩展及库,比如CocoaConler就需要这个功能。
Plug-ins:系统插件,比如磁盘工具的磁盘映像。
PreferencePanes:系统预置插件,一般显示在系统预置的最下方。如安装阿拉丁解压缩软件时生成的StuffItAVR.prefPane
Preferences:预置目录,包括系统、应用程序及用户的各种设置。通常如果预置文件损坏,会导致程序或系统的操作失常,这个时候可以通过删除相应的预置来尝试解决问题。
Printers:打印机驱动。PPD插件,以及配置打印机所需要的库文件。
QuickTime:QuickTime的插件及功能扩展。
Receipts:安装过的.pkg安装包的替身,但不是.pkg安装包本身。例如系统升级或安装时的.pkg。或vpc安装时的.pkg包。
Screen Savers:屏幕保护文件。
Scripting:AppleScript附加的脚本及脚本资源。
Sherlock Plug-ins:Sherlock兼容的插件及功能扩展。
Sounds:系统警告提示音
StartupItems:系统运行时自动启动的系统及第三方脚本或程序。一般通过系统预置-账号来进行设定。
User Pictures:用户账号中,用户显示的图片的文件。
WebServer:Web服务内容。也就是个人Web共享的内容。包括CGI脚本及网页文件。网页文件放置在Documents子目录中。

从体系结构上看,Mac OS X实现了对多文件系统的支持,其中最为重要的文件系统包括 有:Mac OS Extended (HFS+),Mac OS Standard (HFS),UFS, ISO 9660, NFS和 AFP。但 从用户的角度看,文件系统又是单一的。当用户复制,移动或拖移文件和文件夹时,(会感觉似乎)只存在一个文件系统。

    原文作者:Jason~~
    原文地址: https://blog.csdn.net/weixin_43781565/article/details/106401969
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞