/cloudfuse

Filesystem (fuse) implemented on Mosso's Cloud Files

Primary LanguageShellMIT LicenseMIT

Cloudfuse is a FUSE application which provides access to Rackspace's
Cloud Files (or any installation of Swift).

Cloud Files is a remote storage system which is similar in principle to
Amazon S3.  It provides a simple RESTful interface to storing and retrieving
objects.

    http://www.rackspacecloud.com/cloud_hosting_products/files

Swift, the software behind Cloud Files, has been open-sourced as part of the
OpenStack project.

    http://swift.openstack.org/


BUILDING:

    You'll need libcurl, fuse, libssl, and libxml2 (and probably their dev
    packages) installed to build it.  From a base Debian or Ubuntu install,
    this should get you to a point you can build and run it:
        apt-get install build-essential libcurl4-openssl-dev libxml2-dev \
             libssl-dev libfuse-dev

    Cloudfuse is built and installed like any other autoconf configured code.
    Normally,
        ./configure
        make
        sudo make install

    But I'm no autoconf wizard, and there may be dragons lurking there.


USE:

    Your Rackspace Cloud username and API key can be placed in a file
    named $HOME/.cloudfuse:
        username=[username]
        api_key=[api key]

    Or as mount options on the command line:
        cloudfuse -o username=redbo,api_key=713aa... mountpoint/

    Or as mount options in /etc/fstab:
        cloudfuse /mnt/cloudfiles fuse username=redbo,api_key=713aa...,user 0 0

    The following options are... optional:
        use_snet=[True to use servicenet for connections]
        cache_timeout=[seconds for directory caching, default 600]
        authurl=[authentication url - connect to non-Rackspace (swift) cluster]
        use_openstack=[True if using OpenStack Keystone]
        tenant=[Tenant for authentication with Keystone]

    It also inherits a number of command-line arguments and mount options from
    the Fuse framework.  The "-h" argument should provide a summary.

    Your OS user will need access to the "fuse" group.  This can probably be
    accomplished with:
        sudo usermod -a -G fuse [username]


EXAMPLE:

    A typical .cloudfuse configuration file for use with OpenStack Essex:

    username=demo
    tenant=demo
    api_key=supersecret
    authurl=http://10.10.0.1:5000/v2.0/tokens
    use_openstack=true


BUGS/SHORTCOMINGS:

    * rename() doesn't work on directories (and probably never will).
    * When reading and writing files, it buffers them in a local temp file.
    * It keeps an in-memory cache of the directory structure, so it may not be
      usable for large file systems.  Also, files added by other applications
      will not show up until the cache expires.
    * The root directory can only contain directories, as these are mapped to
      containers in cloudfiles.
    * Directory entries are created as empty files with the content-type
      "application/directory".
    * Cloud Files limits container and object listings to 10,000 items.
      cloudfuse won't list more than that many files in a single directory.


AWESOME CONTRIBUTORS:

    * Tim Dysinger fixed the Makefile              https://github.com/dysinger
    * Chris Wedgwood made du work by fixing stat   https://github.com/cwedgwood
    * Nick Craig-Wood implemented rename           https://github.com/ncw
    * Dillon Amburgey made it compile on clang     https://github.com/dillona


Thanks, and I hope you find it useful.

Michael Barton
<mike@weirdlooking.com>