Unixfs

A file in IPFS isn’t just content. It might be too big to fit in a single block, so it needs metadata to link all its blocks together. It might be a symlink or a directory, so it needs metadata to link to other files. UnixFS is the data format used to represent files and all their links and metadata in IPFS, and is loosely based on how files work in Unix. When you add a file to IPFS, you are creating a block (or a tree of blocks) in the UnixFS format.

UnixFS is a protocol-buffers-based format. You can find the definitions for it at:
https://github.com/ipfs/go-unixfs/blob/master/pb/unixfs.proto.

Note: we are currently designing an updated version of UnixFS that will be IPLD-compatible. You can follow along or participate on GitHub.