Provided by: fusefile_1.2-1build2_amd64 bug

NAME

       fusefile, fusedisk - FUSE file mount for combining file fragments

SYNOPSIS

       fusefile [fuse-opts] mountpoint [overlay] filename/from-to ...
       fusefile -dump [fuse-opts] mountpoint [overlay] filename/from-to ...
       fusefile -push [fuse-opts] mountpoint [overlay] filename/from-to ...
       fusedisk [fuse-opts] mountpoint [overlay] filename/from-to ...

DESCRIPTION

       fusefile  is  a  FUSE  file  mount  that  presents  a  series of fragments of other files as a contiguous
       concatenation. Technically it bind mounts a driver on top of the filename mountpoint to provide access to
       the given file fragments as if in a single, contiguous file.

       fusefile accepts over-writing on the fused file (i.e. the mountpoint) which gets distributed  accordingly
       to  the  fragments. But neither the fused file nor the fragments can change size; any writing thus merely
       over-writes content without truncating fragments. All fragment files are  held  open  while  fusefile  is
       active.

       By  using  the  optional -overlay:filename argument between the mount point and the fragments, an overlay
       file may be set up. The overlay file will then be used by fusefile for capturing writes to the fused file
       (i.e. the mountpoint). The overlay file will contain any new written fused file regions followed by  meta
       data to distinguish between new, written content and old content that comes from the fragments.

       By  instead  using the -overlay:list argument where list is a colon-separated list of filenames, fusefile
       will use those as an ordered stack of overlays and "inject" them as fragments on top of each other.

       The option -dump as first argument together with a fusefile setup will print the setup to standard output
       rather than establishing a fusefile mount. This is of most use with a prior overlay setup where then  the
       printout  includes  the  portions  of updates that have been captured in the overlay. The printout is the
       series of fusefile fragment argments to give in  order  to  intersperse  the  captured  overlay  portions
       according to the overlay table.

       The  option -push as first argument together with a fusefile setup will push the overlay into the sources
       (except for write-protected fragments). This is only of use with a prior overlay  setup  where  then  the
       updates that have been captured in the overlay get pushed into the fragments.

       fusedisk  is  a  helper  script  to set up a fusefile as a block device (via fuseblk) by using the device
       mapper (dmsetup) to manage an empty block device mapping where content is handled at the  mountpoint  via
       fusefile.  (Note that the same thing may be done with the device manager directly, but then all fragments
       need to be in sectors of N*512 bytes whereas with fusedisk, only the fused file as a whole  is  "clipped"
       at nearest N*512 bytes below actual size)

FRAGMENT ARGUMENTS

       The  fragment  arguments  include  the  filename  of  a  source  file,  and optionally start and end byte
       positions. All in all there five variations:

       filename or filename/
              include all of the file. A pathname that includes "/" must be ended with an extra "/"  since  that
              last "/" separates the filename from the range detail.

       filename/start:end
              include  the range from the given start to end. Either "start" or "end" or both may be omitted, to
              mean the beginning and end of the file respectively. If "start" or "end" are less than 0  then  it
              means relative to the end of the file.

       filename/start+length
              include  "length"  bytes from the given start. A negative "start" means relative to the end of the
              file. If "length" is negative or omitted it means that position relative to the end.

       filename/start include bytes from the given start. This is the
              same as "/start+"

       Note that a negative start position is clipped to 0 and a too large end position is clipped to the end of
       the file.

       Character devices are treated as being of any given finite size, but have size 0 by default. For example,
       "/dev/zero/:100" means a fragment of 100 NUL bytes.

OPTIONS

       This section enumerates the most interesting options to use with fuesfile. See "man fuse" and "man mount"
       for more options.

       -dump

              The -dump "option" tells fusefile to print out the applicable fragment sequence  for  the  current
              setup,  including  the  overlay  table, if any. The printout is done instead of setting up a mount
              point.

       -oallow_other

              The fuse option -oallow_other is needed for sharing the fused file with other users who  otherwise
              will  not  have  access  to it (including "root"). Note however that this must first be enabled in
              /etc/fuse.conf.

       -ononempty

              The fuse option -ononempty may need to be used when reusing an existing file as mountpoint.

       -ouid=... and -ogid=...,

              These mount options, where ... is a user or group id respectively, are useful for root when  using
              fusedisk and thereby give user or group ownership for the mount to the nominated user or group.

EXAMPLES

       This section illustrates uses of fusefile.

   Exanple 1.
       Insert a file "y" into a file "x" at position 1200.
              $ fusefile -ononempty x x/:1200 y x/1200:
       This also shadows the original file "x" and presents the fused file instead.

   Example 2.
       Make fused file y be a swap of the beginning and end of file "x", at position 2442.
              $ fusefile y x/2442: x/:2442

   Example 3.
       Replace  partition  2 of an image file, A, with a different file, X. For this example the partition table
       looks as follows.
              $ partx -oNR,START,SECTORS A
                  NR   START  SECTORS
                   1    2048  2097152
                   2 2099200   409600
                   3 2508800 14268383
       As each sector is 512 bytes the clipping points around partition 2 are 1074790400 and 1284505600 and  the
       insertion size is 209715200 bytes.  The fusefile comman will therefore be as follows.
              $ fusefile -ononempty A A/:1074790400 X/:209715200 A/1284505600
       Note that the fused file shadows the original file A.

   Example 4.
       Protect raw disk image file with an overlay:
              $ fusefile -ononempty disk.raw -overlay:today disk.raw
       By that set up, the overlay file, "today", will protect the disk image file, "disk.raw" from changes, and
       also override the pathname "disk.raw" to be the fused file.

   Example 5.
       A  fusefile mount with an overlay file is writable regardless of the fused fragments, but all updates are
       written to the overlay file instead of to the fragments.

              $ fusefile -ononempty A -overlay:B A

       The overlay file, B in the example, contains all changes to the shadowed original file,  A.  The  overlay
       file contains only the newly written regions and content is otherwise obtained from the original file.

       To that end, the overlay file also contains a "marker table" at the end as if appended to the fused file.
       That part of the file is outside of the fused file; and it's simply an element count followed by pairs of
       byte  addresses  that tell which regions of the fused file have been captured into the overlay file. (The
       marker table is of course maintained so that adjoining regions are collapsed)

       Thus, an overlay file may be reused to later re-establish the same fused file with overlay as previously,
       to continue capturing more changes.

   Example 6.
       As final example, we set up a fused block device y as a swap of the beginning and end  of  file  "x",  at
       position 2442:
              $ sudo fusedisk -ouid=1000 y x/2442: x/:2442
       Note  the  use  of  sudo  for  becoming  root,  which is required for block device handling, and also the
       -ouid=1000 option so as to make the block device y be owned by the user with id 1000.

NOTES

       fusefile opens the nominated source files before any bind mounting. With the fuse  option  -ononempty  it
       will  bind  over  an  non-empty  file,  which may be useful. The source files remain open, but the source
       fragments are not recomputed. If a source file changes the fused file will present the new content. If  a
       source is reduced in size, access will be inconsistent.

       If the mountpoint file doesn't exist, then fusefile creates it.

       Unmounting  is done with "fusermount -u mountpoint" as usual. A fusedisk mount is unmounted by root using
       umount.

SEE ALSO

       fuse, fusermount, mount, dmsetup

AUTHOR

       Ralph Rönnquist <ralph.ronnquist@gmail.com>.

                                                                                                     fusefile(8)