Pascal Obry d1ebf37c06 Properly truncate the file at the new position.
This ensures that if the new file is smaller than the previous
ne, the proper size is uploaded.

Fixes for #101.
2016-12-23 21:11:19 +01:00
2015-11-30 22:08:13 +01:00
2015-11-30 22:08:13 +01:00
2016-11-27 23:00:44 +01:00
2011-08-31 15:58:28 -07:00
2015-11-30 22:13:22 +01:00
2015-11-30 22:13:22 +01:00
2009-02-03 04:21:41 -06:00
2009-02-03 04:21:41 -06:00
2015-11-30 22:10:57 +01:00
2016-10-16 11:34:15 +02:00

HubicFuse is a FUSE application which provides access to Hubic's
cloud files via a mount-point.

This version contains support for DLO, symlinks and support to see other
tenant's containers. Those features are coming from:

   https://github.com/LabAdvComp/cloudfuse.git

BUILDING:

    You'll need libcurl, fuse, libssl, and libxml2 (and probably their dev
    packages) installed to build it.

    For CentOS or similar:
        $ yum install gcc make fuse-devel curl-devel libxml2-devel \
            openssl-devel json-c-devel file-devel

        $ PKG_CONFIG_PATH=/lib64/pkgconfig ./configure

    For GNU/Debian or Ubuntu:
        $ sudo apt install gcc make curl libfuse-dev pkg-config \
            libcurl4-openssl-dev libxml2-dev libssl-dev libjson-c-dev \
            libmagic-dev

        $ ./configure

    Then just compile and install:

        make
        sudo make install

USE:

    Your Hubic Cloud configuration can be placed in a file named
    $HOME/.hubicfuse. All the following variables are required:

        client_id=[Hubic client id for the registered application]
        client_secret=[Hubic client secret for the registered application]
        refresh_token=[A refresh token you got from the script]

    Optional variables:
        get_extended_metadata=[true/false, force download of additional file metadata like atime and mtime on first directory list]
        curl_verbose=[true/false, enable verbose output for curl HTTP requests]
                curl_progress_state=[true/false, enable verbose progress output for curl HTTP requests. Used for debugging.]
        cache_statfs_timeout=[value in seconds, large timeout increases the file access speed]
        debug_level=[0 default, 1 extremely verbose for debugging purposes]
                enable_chmod=[true/false, false by default, still experimental feature]
                enable_chown=[true/false, false by default, still experimental feature]

    client_id, client_secret can be retrieved from the hubic
    web interface: https://hubic.com/home/browser/developers/

    The refresh_token can be obtained running the script provided (hubic_token)
    or with any other method you like if you follow the example at
    https://api.hubic.com

    Then you can call hubicfuse:

        sudo hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other

    And finaly, it can be set in /etc/fstab:

        hubicfuse /mnt/hubic fuse user,noauto 0 0

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

USE AS NON-ROOT:

    Add the user into the fuse group:

       $ sudo usermod -a -G fuse [username]

    Mount using the above command without the sudo. The .hubicfuse file is
    searched into the user's home.

    To unmount use:

       $ fusermount -u [chemin]

USE with rsync:

    HubiC protocol has no support for renaming. So be sure to use the
    --inplace option to avoid a second upload for every uploaded object.

BUGS/SHORTCOMINGS:

    * A segment size is limited to 5Gb (this is not hubicfuse limit, but HubiC implementation).
      So segment_above should never exceed 5Gb.
    * 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.
    * File copy progress when uploading does not work, progress is shown when
      file is copied in local cache, then upload operation happens at 100%

Recent additions/fixes:
    * Support for atime, mtime, chmod, chown.
    * Large files (segmented) have correct size listed (was 0 before).
    * Multiple speed improvements, minimised the number of HTTP calls and added more caching features.
    * Fixed many segmentation faults.
    * Cached files are deleted on cache expiration when using a custom temp folder.
    * Files copied have attributes preserved.
    * Working well with rsync due to mtime support and proper copy operations.
    * Debugging support for http progress (track upload / download speed etc.)
    * Reduced traffic, skips file uploads to cloud if content does not change (using md5sum compare)
    * Major code refactoring, code documentation, extensive debugging, additional config options

AWESOME CONTRIBUTORS:

    * Pascal Obry                        https://github.com/TurboGit
    * Tim Dysinger                       https://github.com/dysinger
    * Chris Wedgwood                     https://github.com/cwedgwood
    * Nick Craig-Wood                    https://github.com/ncw
    * Dillon Amburgey                    https://github.com/dillona
    * Manfred Touron                     https://github.com/moul
    * David Brownlee                     https://github.com/abs0
    * Mike Lundy                         https://github.com/novas0x2a
    * justinb                            https://github.com/justinsb
    * Matt Greenway                      https://github.com/LabAdvComp
    * Dan Cristian                       https://github.com/dan-cristian

Thanks, and I hope you find it useful.

Pascal Obry
<pascal@obry.net>
S
Description
Support for mounting HubiC drive in GNU/Linux
Readme MIT
776 KiB
Languages
C 73.8%
Shell 23.9%
M4 1.2%
Makefile 0.9%
Dockerfile 0.2%