X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=README.adoc;h=5e4f36385498268be4f985221beb794caf3882f4;hb=e4f6422b273fa4c38b444aead8485ef3718fb123;hp=7c00e220d2cda937c26ff277c0e062a9f9da9dc8;hpb=55b2774b3ac5f48aca48f18d3aa3f49a7ba621a6;p=rrq%2Ffusefile.git diff --git a/README.adoc b/README.adoc index 7c00e22..5e4f363 100644 --- a/README.adoc +++ b/README.adoc @@ -1,76 +1,27 @@ -fusefile -======== +# fusefile -This project implements a "fuse" device to mount as a single file that -is a concatenation of fragments of one or more files. By default the -fused file is read-only. +This project implements a "fuse" device to mount a concatenation of +fragments of one or more files as a single file. -A writeable fused file is set up by associating the mount with a -"scratch pad file" +The __fused file__ allows writing to fragments (without changing their +sizes); of course only for writable fragment files. The fused file may +be set up with an __overlay file__ to capture changes instead of +writing the underlying fragment files. -FUSE file mount for combining file fragments. - -== SYNOPSIS - *fusefile* [_fuse options_] *mountpoint* _filename/from-to_ ... +==== +This is a nominal usage example to set up a fused file C consisting of +files A and B: +---- +$ fusefile C A B +---- +==== -## DESCRIPTION +==== +This is a nominal example of tearing down a fused file X: +---- +$ fusermount -u C +---- +==== -*fusefile* is FUSE file mount that presents a series of fragments of -other files as a contiguous concatenation. It bind mounts a driver on -top of the file mountpoint to present the nominated file fragments as -a single, contiguous file. +See the +man page+ for usage details and some more examples. -The fragment arguments include the filename of a source file, and -optionally start and end byte positions. All in all there five -variations: - - * __filename__ include all of the file. - - * __filename/__ include all of the file named with "/" in the pathname. This case requires a final "/", since the last "/" separates the filename from the position details. - - * __filename/from__ include the file from the given start position, to end. - - * __filename/-to__ include the file from beginning to the given end position (not included). - - * __filename/from-to__ include the file from the given start position, up to the given end position (not included). - - * *pad=*_filename_ when this is given as first argument, the fused - file is set up as a writable random-access file, where the write - events are captured appended to the nominated "pad" file. The new - content is inserted into the fused file but not the original files, - and fragments are split up and adjusted as needed so as to make the - write events appear as insertions inteo the fused file. - -## EXAMPLES - -Insert file "y" into file "x" at position 1200: - - $ fusefile -ononempty x x/-1200 y x/1200 -The bind mount shadows the original file "x", and presents the -composite instead. - -Make file y be a swap of the beginning and end of file "x", at -position 2442: - - $ fusefile y x/2442 x/-2442 - -## NOTES - -Note that **fusefile** opens the nominated source file(s) before bind -mounting. With the fuse option __-ononempty__ it will bind over an -non-empty file, which may be useful. The source file descriptors -remain open, but the source fragments are not recomputed. If a source -file changes or reduces in size, anything may happen. - -If the mountpoint file doesn't exist, then **fusefile** creates it, -and removes it when unmounted. - -When a "pad" file is used, it is updated as a simple archive where -each write event is a new member appended at the end. Each "pad" -member has a prefix of two newline-terminated text lines telling the -insertion position and the member size (both as ascii decimal digits), -before the actual insertion event content. - -## AUTHOR - -Ralph Rönnquist