Man Linux: Main Page and Category List

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.

              Configure debuild to ignore  .ilist  files,  through  -i  or  -I
              option.

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

       COWDANCER_DEBUG
              Debugging option.  Enables debug messages.  cowdancer will  give
              verbose debug messages in standard error output.

       COWDANCER_SO
              Debugging    option.     Specifies    a   different   path   for
              libcowdancer.so.

       COWDANCER_REUSE=yes
              Enables reuse of cowdancer .ilist  file  found  for  consecutive
              runs of cow-shell.

RETURN VALUE

       The  functions  that  are  overridden with cowdancer will give an errno
       value of ENOMEM when there is a problem.

       System isn’t really out of  memory,  but  this  error  code  is  chosen
       because this error is usually handled gracefully by applications.

RESTRICTIONS

       Can only support directories that are scanned by cow-shell command.

       The  operation  is  not  semantically correct when files are originally
       hardlinked, hardlinks are always broken.

       Does not support anything when LD_PRELOAD trick does not work.

       Does not work unless hardlinks are supported on the filesystem.

       Not very user-friendly.

       Leaves .ilist file around.

AUTHOR

       Junichi Uekawa (dancer@debian.org)

       Upstream           page           is            available            at
       http://www.netfort.gr.jp/~dancer/software/cowdancer.html

SEE ALSO

       cowdancer-ilistcreate (1)