Merge branch 'suites/experimental'
[rrq/fusefile.git] / README.md
1 fusefile
2 ========
3  
4 FUSE file mount for combining file fragments read-only.
5  
6 ## SYNOPSIS
7  **fusefile** [__fuse options__] **mountpoint** __filename/from-to__ ...
8
9 ## DESCRIPTION
10
11 **fusefile** is FUSE file mount that presents a series of fragments of
12 other files as a contiguous concatenation. It bind mounts a driver on
13 top of the file mountpoint to present the nominated file fragments as
14 a single, contiguous file.
15
16 The fragment arguments include the filename of a source file, and
17 optionally start and end byte positions. All in all there five
18 variations:
19
20  * __filename__ include all of the file.
21
22  * __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.
23
24  * __filename/from__ include the file from the given start position, to end.
25
26  * __filename/-to__ include the file from beginning to the given end position (not included).
27
28  * __filename/from-to__ include the file from the given start position, up to the given end position (not included). 
29
30 ## EXAMPLES
31
32 Insert file "y" into file "x" at position 1200:
33   
34     $ fusefile -ononempty x x/-1200 y x/1200
35 The bind mount shadows the original file "x", and presents the
36 composite instead.
37
38 Make file y be a swap of the beginning and end of file "x", at
39 position 2442:
40
41     $ fusefile y x/2442 x/-2442
42
43 ## NOTES
44
45 Note that **fusefile** opens the nominated source file(s) before bind
46 mounting. With the fuse option __-ononempty__ it will bind over an
47 non-empty file, which may be useful. The source file descriptors
48 remain open, but the source fragments are not recomputed. If a source
49 file changes or reduces in size, anything may happen.
50
51 If the mountpoint file doesn't exist, then **fusefile** creates it,
52 and removes it when unmounted.
53
54 ## AUTHOR
55
56 Ralph Rönnquist <ralph.ronnquist@gmail.com>