forked from TurboGit/hubicfuse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
127 lines (92 loc) · 5.2 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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:
$ apt-get 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]
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.
* 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