funionfs man page
funionfs — user-space directory concatenation.
funionfs upper_dir mountpoint [ option ] ...
- -o opt,[opt...] mount options
-h --help print help
-V --version print version
- Mount options include:
funionfs_debug print some debugging information
dirs=LIST A colon separated list of directories
/branch1=rw a directory in a read-write mode
/branch1 if no permission is specified, the branch
is in a read-write mode
/branch2=ro a directory in a read-only mode
copyupuid=N uid of the copied-up files (no default)
copyupgid=N gid of the copied-up files (no default)
copyupmode=N mode of the copied-up files (no default)
del_string=N string to mark a deleted file(default: _DELETED~ )
delete=TYPE specifies how funionfs deletes and renames
all (default) delete all objects in read-write branch (default)
and add a whiteout file if objects exists in
whiteout only add a whiteout file in upper (rw) branch
or delete file in upper branch.
copyup=TYPE specifies how to manage attributes
preserve preserve uid, gid and mode of object (default)
currentuser the object owns to the user doing the operation
mounter the object owns to the mounter
There is no implementation of -o delete and -o copyup for now.
You could use the mount command instead :
mount -t fuse funionfs#/upper_dir mountpoint [ options ]
If you want to name all directories in '-o dirs=', then pass "none" as upper_dir
funionfs concatenates directories mentioned in options (and upper_dir ) to mountpoint. Also, although some (but not all) of the directories are read-only, you still can write in resulting mounted directory. For example, if you have files a/a and b/b and mount mountpoint r with "-o dirs=a=ro:b=ro:w=rw", then you will see files r/a and r/b. You will be able to write to them, and original files will remain intact (changes will go to w ). Note that it is impossible to have file with name ending by del_string value, if you create r/a_DELETED~ in mentioned example, it will dissapear together with a.
You cannot mount an overlay on / (the program that list the content of / will hang). This is probably due to a loop call of the fuse driver. There is no known solution for now.
Probably minor (or major) mistakes in not-so-frequent cases.
Not enough tested.