Heirarchical FileSystem (extended)

The default filesystem on Mac OS. Also known as Mac OS Extended.

When support for HFS+ was made available with Mac OS 8.1 in 1998, it offered several enhancements to HFS, the filesystem that it replaced. These included smaller allocation block size, which makes better use of disk space, and long Unicode file names. There are several significant differences between HFS+ and other filesystems, such as UFS.

  • Multiple forks
    Files may have a resource fork in addition to a data fork. This is used to store resources such as icons, graphics, localized strings and extended metadata. With Mac OS X, Apple discourages the use of resource forks, and provides a more elegant system of bundles to provide the benefits of the multi-fork system (such as easy internationalization), but without the drawbacks (cannot be transfered to other filesystems without additional encoding).
  • Case insensitive, case preserving
    Much like e2 node titles. The files foo.txt and Foo.txt are considered to be the same, and cannot both exist within the same directory. This can cause problems with *nix software on Mac OS X that expects to be able to have differently capitalized files within a directory. PHP is a case in point, which tries to create a directory called PEAR and a file named pear in the same place.
  • Path separators
    The colon (:) is used as the path separator, not the slash character. This means that colons cannot appear within filenames. Slashes may appear in names, but it is not recommended.
  • Extended metadata
    HFS+ supports creation dates as well as modification dates, and also stores creator and type information within the file.
  • Aliases
    Aliases are similar to symbolic links, in that they are a lightweight reference to another file. They differ from symlinks as the path to which they point is not hardcoded. In other words, you may move the referenced file and the alias will still point to that file. This is not always desiarable behaviour, so Mac OS X supports symbolic links as well as aliases.