(Un)ChunkFS

News

2019-07-22

Version 0.8 released. Just a bunch of compatibility fixes, no functional changes.

2013-12-25

Version 0.7 released. Change Debian dependency from deprecated fuse-utils to fuse. Also, check that file descriptors 0 to 2 are open on startup.

2010-03-17

Version 0.6 released. Fixes a potential file descriptor leak in UnChunkFS in case of read errors while reading from the ChunkFS tree.

2009-08-31

Version 0.5 released. Mostly style improvements, no bug fixes. writeoverlay.sh now uses the new losetup option -s to avoid a race condition in the device allocation.

2008-07-23

Version 0.4 released. This fixes a rather dangerous bug that caused most read errors to be ignored. Thanks to Martin Pohlack for pointing this out, indirectly ;-)

What is (Un)ChunkFS?

Glad you ask. ChunkFS is a FUSE based filesystem that allows you to mount an arbitrary file or block device as a directory tree of files that each represent a chunk of user-specified size of the mounted file. The chunk size is global per mount, but at mount time any value can be specified. (If the file size isn't a multiple of the specified chunk size, the last file in the tree simply will be smaller than the chunk size.) Only read access is supported at the moment.

UnChunkFS is the inversion of ChunkFS—it allows you to mount a ChunkFS tree (or a copy of it, of course), and gives you a single file named image that has the same contents as the file or device you created the tree from by mounting it as a ChunkFS.

What's that Good for?

ChunkFS was originally written for making space-efficient incremental backups of encrypted filesystem images using rsync. Using the --link-dest option of rsync, you can create incremental backups from the ChunkFS-mounted image where any chunk that hasn't changed since the last backup will be a hard link to the corresponding chunk from the previous backup. Meanwhile, this is deprecated, as ChunkSync allows for much more efficient creation of such backups.

In order to restore a backup, regardless of whether ChunkSync or ChunkFS plus rsync was used for creating it, you simply can concatenate all the chunks from the backup—or mount it using UnChunkFS and then use the image file for restoring from it.

There is a script included that allows any read-only block device to be converted into a writable one by the means of the Linux device mapper's snapshot facility, so you can mount images from block device snapshots of journaling filesystems that need to do a log replay before they can be mounted.

What Does it Run on?

It's been written for Linux—but I guess it should be easy to port to other systems that support FUSE. That only applies to the (un)chunkfs programs themselves, of course—the writeoverlay script uses the Linux device mapper and thus most likely won't work on anything but Linux.

Download

Version Source Debian package i386 Debian package amd64 PGP signature
0.1 chunkfs_0.1.tar.gz (5.5 KiB) chunkfs_0.1_i386.deb (10 KiB) chunkfs_0.1_amd64.deb (9.3 KiB) chunkfs_0.1.asc
0.2 chunkfs_0.2.tar.gz (13 KiB) chunkfs_0.2_i386.deb (13 KiB) chunkfs_0.2_amd64.deb (12 KiB) chunkfs_0.2.asc
0.3 chunkfs_0.3.tar.gz (14 KiB) chunkfs_0.3_i386.deb (14 KiB) chunkfs_0.3_amd64.deb (14 KiB) chunkfs_0.3.asc
0.4 chunkfs_0.4.tar.gz (15 KiB) chunkfs_0.4_i386.deb (15 KiB) chunkfs_0.4_amd64.deb (14 KiB) chunkfs_0.4.asc
0.5 chunkfs_0.5.tar.gz (15 KiB) chunkfs_0.5_i386.deb (15 KiB) chunkfs_0.5_amd64.deb (15 KiB) chunkfs_0.5.asc
0.6 chunkfs_0.6.tar.gz (15 KiB) chunkfs_0.6_i386.deb (15 KiB) chunkfs_0.6_amd64.deb (15 KiB) chunkfs_0.6.asc
0.7 chunkfs_0.7.tar.gz (15 KiB) chunkfs_0.7_i386.deb (16 KiB) chunkfs_0.7_amd64.deb (14 KiB) chunkfs_0.7.asc
0.8 chunkfs_0.8.tar.xz (14 KiB) chunkfs_0.8_i386.deb (15 KiB) chunkfs_0.8_amd64.deb (14 KiB) chunkfs_0.8.asc

Feedback

In case you were wondering how to reach me: Florian Zumbiehl <florz@florz.de>, PGP key AF260AB1. Usually, you find me as florz on IRCNet, Freenode, and OFTC, too. <xmpp:florz@florz.de> should do, also.