FuseCompress ============ http://fusecompress.googlecode.com/ We are not responsible for any badness that may happen to you while using this software. NEWS ~~~~ 0.9.2 The source code is arranged in folders. Update man pages. Developments documents. Don't inline function. 0.9.1.1 Buffer overflow from command line parsing fixed. Fix bug that caused permition problems on read-only files. 0.9.1 File format has been changed. It allows better cooperation with file and magic utility. 0.9.0 First release that can be marked as stable. Many bugs fixed. 0.8.8 User can choose compression method via program parameter. 0.8.7 Correct rename bug, don't freeze on unmounting when in debug mode. 0.8.6 Correct time of last status chnage, correct cleaning during unmount. Remove hard-coded minimal filesize for compressing. 0.8.4 Support lzo compression. 0.8.3 Problem with files bigger than 2GB fixed. 0.8.2 Write-only bug corrected. 0.8.1 README updated. 0.8 Major update. New format for storing compressed files is used. LICENSE ~~~~~~~ This program is distributed under the terms of the GNU Public License version 2. TODO ~~~~ See http://code.google.com/p/fusecompress/issues/list INSTALLATION ~~~~~~~~~~~~ To compile a release build, run ./autogen.sh (If there is no "configure" file) ./configure make For more information, see http://code.google.com/p/fusecompress/wiki/BuildHOWTO USAGE ~~~~~ fusecompress [OPTIONS] /storage/directory [/mount/point] -h print this help -v print version -c lzo/bz2/gz/lzma/null choose default compression method -l LEVEL set compression level (1 to 9) -o ... pass arguments to fuse library You can mount filesystem over existing directory with files by omitting the last parameter. Files will be compressed when you work with filesystem. Even a simple 'find /storage' will compress them. Note that some of the last files found are not compressed - this increases performance on frequently accessed files. These files are compressed when the filesystem is unmounted or (if mounted with "-o noterm" (default for root)) when the fusecompress process receives a SIGTERM signal. Useful parameters for FUSE library: The FUSE library must be configured to support these features - the configuration file /etc/fuse.conf must contains at least the option "user_allow_other". allow_other This option overrides the security measure restricting file access to the user mounting the filesystem. So all users (including root) can access the files. This option is by default only allowed (and automatically enabled) for root, but this restriction can be removed with the configuration option described in the previous section. allow_root This option is similar to 'allow_other', but file access is limited to the user mounting the filesystem and root. This option and 'allow_other' are mutually exclusive. More information can be found at http://code.google.com/p/fusecompress/wiki/Usage TIPS AND TRICKS ~~~~~~~~~~~~~~~ How can I find out about the compression ratio? Run this command in the FuseCompressed directory when mounted with FuseCompress: du -sh du -sh --apparent-size The first command prints the total uncompressed size of all files in the current directory and its subdirectories while the second one prints the total compressed size. When the FuseCompress filesystem is not mounted, run `ls -l my_file.dat` and compare the file size with the value obtained with `file my_file.dat`. File and magic utilities: Put this config file into ~/.magic or /etc/magic to allow the file utility to recognize the FuseCompress file format: 0 string \037\135\211 FuseCompressed data >3 byte 0x00 (null format) >3 byte 0x01 (bz2 format) >3 byte 0x02 (gz format) >3 byte 0x03 (lzo format) >3 byte 0x04 (lzma format) >3 byte >0x04 (unknown format) >4 long x uncompressed size: %d AUTHORS ~~~~~~~ Milan Svoboda <milan.svoboda@centrum.cz> (original author) Anders Aagaard <aagaande@gmail.com> (direct compress feature) Ulrich Hecht <uli@suse.de> (LZMA module, tools, test suite, bugfixes, maintainer) Feel free to contact Ulrich Hecht with suggestions and bug reports. Thanks to Dobos Sándor for testing. Thanks to Roland Kletzing for exhaustive testing and suggestions.