A C++
library providing access to files located in various cloud services
licensed under GNU LGPLv2.1
. It is focused on the basic operations on those
services.
GoogleDrive
OneDrive
Dropbox
box.com
YandexDisk
WebDAV
mega.nz
AmazonS3
pCloud
hubiC
4shared
Google Photos
(partial)YouTube
(partial)
list directory
download file
upload file
get thumbnail
delete file
create directory
move file
rename file
fetch direct, preauthenticated url to file
jsoncpp
tinyxml2
libmicrohttpd
(optional)cURL
(withOpenSSL
/c-ares
, optional)libcryptopp
(optional, required forAmazonS3
)mega
(optional, required formega.nz
)
The generic way to build and install it is:
./bootstrap
./configure
make
sudo make install
Optional dependency notes:
-
libcryptopp
:when not found,
ICrypto
interface needs to be implemented, can be
explicitly disabled with--with-cryptopp=no
-
libcurl
when not found,
IHttp
interface needs to be implemented, can be explicitly
disabled with--with-curl=no
-
libmicrohttpd
when not found,
IHttpServer
interface needs to be implemented, can be
explicitly disabled with--with-microhttpd=no
-
boost-filesystem
when found,
LocalDrive
provider representing local directory will be
included, can be explicitly disabled with--with-filesystem=no
-
mega
when not found,
mega
cloud provider will not be included, can be
explicitly disabled with--with-mega=no
In bin/fuse
there is implemented a user space file system using fuse
(https://github.com/libfuse/libfuse) library. It will be build when fuse
is
found (unless explicitly disabled with --with-fuse=no
). The file system
is implemented using libfuse
's low level api; however high level api
implementation is also provided. The file system supports moving, renaming,
creating directories, reading and writing new files. Writing over already
present files in cloud provider is not supported. The file system uses
asynchronous I/O to its full potency. It doesn't cache files anywhere by
itself which implies no local storage overhead. Most cloud providers are fast
enough when it comes to watching videos; with mega.nz
being the fastest and
Google Drive
being the slowest.
It is possible to run cloudstorage-fuse
under Windows
using Dokan
(https://github.com/dokan-dev/dokany).
To add cloud providers to file system, first the cloud providers need to be
added. This can be done by calling:
cloudstorage-fuse --add=provider_label
After cloud providers are added, the file system can be mount using:
cloudstorage-fuse mountpoint
In bin/cloudbrowser
there is a program which provides easy graphics user
interface for all the features implemented in libcloudstorage
. It will be
built when its dependencies are found, unless explicitly disabled with
--with-cloudbrowser=no
.
Cloud Browser dependencies:
-
Qt5Core
,Qt5Gui
,Qt5Quick
-
kirigami
(https://github.com/KDE/kirigami) -
Qt5WebView
when found, Cloud Browser will use it to present the authorization scheme
-
ffmpeg
when found, Cloud Browser will generate fallback thumbnails if cloud
provider doesn't provide any -
vlc-qt
(https://github.com/vlc-qt/vlc-qt)when found, Cloud Browser will use vlc-based media player instead of
QtMultimedia-based one -
mpv
when found, Cloud Browser will use mpv-based media player
Screenshot:
- https://play.google.com/store/apps/details?id=io.storage.cloudbrowser
- https://www.microsoft.com/en-us/p/cloud-storage-browser/9nbkjrh757k7
Implement following cloud providers:
Apple ICloud
Asus WebStorage
Baidu Cloud
CloudMe
FileDropper
Fileserve
Handy Backup
IBM Connections
Jumpshare
MagicVortex
MediaFire
Pogoplug
SpiderOak
SugarSync
Tencent Weiyun
TitanFile
Tresorit
XXL Box
Implement bindings to various languages, notably script languages:
Obj-C
python
ruby
JavaScript
/node
Java
Integrate in various desktops
KIO
slavegvfs
implementation
Implement chunked uploads.