cow-shell(1)

NAME
cow-shell - Start a copy-on-write session and invoke a shell.

SYNOPSIS
cow-shell [commandline]

DESCRIPTION
cow-shell Executes specified command with cowdancer or a shell if no command-line option is given. Inside the cowdancer session, files under the current directory are protected in a way so that a write operation to an i-node which existed at the point of running cow-shell is not modified. Useful for managing hard-linked source-trees and scratch-filesystems.

EXAMPLES

cp -al cowdancer/ cowdancer.new &&  cd cowdancer.new && cow-shell
    Create a hardlinked tree, and cd into the newly created tree. After invoking cow-shell inside that tree, a write operation against a file that is hardlinked with the original tree will be copied to a new file before write.

cp -al cowdancer/ cowdancer.new &&  cd cowdancer.new && cow-shell debuild
    Tries to run dpkg-buildpackage on the new tree, to avoid damage to the original tree.

FILES

.ilist
    Generated dynamically in the current directory. The file contains the list of i-node numbers that should be protected from write operation.

/usr/lib/cowdancer/libcowdancer.so
    The shared library used internally that overrides some functions that potentially write to files. This library implements the COW feature and is preloaded with LD_PRELOAD.

/bin/cp
    Used for copying. Requires GNU option -a to be functional.

ENVIRONMENT

COWDANCER_ILISTFILE
    The path to the current .ilist file.

COWDANCER_IGNORE
    Used internally to work around infinite loops. It will be unset.

LD_PRELOAD
    Utilized to preload libcowdancer.so

BUGS
Does not cross device boundaries. Does not support anything that LD_PRELOAD does not work. Does not work unless hardlinks are supported. Not very user-friendly.

AUTHOR
Junichi Uekawa (dancer@debian.org) Upstream page is available at http://www.netfort.gr.jp/~dancer/software/cowdancer.html