ciopfs iconciopfs 0.4

A case insensitive on purpose file system based on FUSE
ciopfs is a case insensitive on purpose file system based on FUSE.

ciopfs is a stackable or overlay linux userspace file system (implemented with fuse) which mounts a normal directory on a regular file system in case insensitive fashion.

The commands below should illustrate it's function.

mkdir -p ~/tmp/ciopfs/{.data,case-insensitve}
ciopfs ~/tmp/ciopfs/.data ~/tmp/ciopfs/case-insensitive
cd ~/tmp/ciopfs
mkdir -p case-insensitive/DeMo/SubFolder
echo demo >> case-insensitive/DEMO/subFolder/MyFile

At this point your file system should look like this:

`-- DeMo
`-- SubFolder
`-- MyFile
`-- demo
`-- subfolder
`-- myfile

To avoid any conflicts you should not manipulate the data directory directly, any change should be done over the mount point. Any filenames in the data directory which aren't all lower case are ignored.

If you want to mount the file system automatically at boot time add a line like the one below to your /etc/fstab.

/data/projects/ciopfs/data /data/projects/ciopfs/mnt ciopfs allow_other,default_permissions,use_ino,attr_timeout=0 0 0


· Filesystem in Userspace
· International Components for Unicode (C/C++) (optional)

Runtime Requirements

If you want the file system to preserve case information you have to make sure that the underlying file system supports extended attributes (for example for ext{2,3} you need a kernel with CONFIG_EXT{2,3}_FS_XATTR enabled). You probably also want to mount the underlying filesystem with the user_xattr option which allows non root users to create extended attributes.

Build Requirements

In order to compile ciopfs you will need the fuse development files, libattr and if you plan to use unicode characters within file names you will either need glib which is the default or alternatively libicu from

If you want to use neither of those the file system will fall back to libc's tolower(3) function which is only defined for [a-zA-Z] which means it will only work case insensitvely for ascii file names.

For ease of use the following 3 Makefile targets are supported:

· unicode-glib (default)
· unicode-icu
· ascii

Running one of those followed by sudo make install should do everything that is needed.

last updated on:
June 19th, 2011, 21:33 GMT
developed by:
Marc Andre Tanner
license type:
GPL (GNU General Public License) 
ROOT \ System \ Filesystems


In a hurry? Add it to your Download Basket!

user rating 14



What's New in This Release:
  • Fixed some bugs in symlink creation.
  • Implemented better errno handling.
read full changelog

Add your review!