CloudCross it's open source software for the synchronization of local files and folders with multiple cloud storages.
On this moment CloudCross supports sync with Yandex.Disk Google Drive Cloud mail.ru OneDrive and Dropbox.
This program was written in pure Qt, without any third-party libraries.
The program works with Qt version 5 and above. Qt version 4.x are not supported.

CloudCross features:

  • working with multiple cloud providers. (Google, Dropbox, Yandex, Mail.ru, OneDrive)
  • bidirectional documents converting from MS Office or Open Office document format to Google Docs.
  • synchronization on black or white lists. (.exclude and .include files)
  • possibility definition which of storages will have priority on synchronization, local or remote.
  • possibility to force load or unload of files.
  • possibility upload file directly to cloud from URL.
  • working with HTTP and socks proxy servers.

Install

Install from source code

For install on deb-based distributions (Debian, Ubuntu, Linux Mint):
sudo apt-get install build-essential qt5-default qtbase5-dev qt5-qmake
For install on rpm-based distributions (Redhat, CentOS, Fedora, Alt Linux):
yum groupinstall 'Development Tools'
yum install qt5-qtbase qt5-qtbase-devel qt-devel
For install on Arch Linux:
pacman -S base-devel qt5-base
Next,basic install sequence is:
  • Download archive.
  • Unpack it.
  • Go to unpacked folder.
mkdir build
cd build
qmake ../CloudCross.pro
make
As a result, in build directory will be ccross file appears

Download

Install package home:MasterSoft24 / cloudcross

Select Your Operating System

Arch

Arch

CentOS

CentOS

Debian

Debian

Fedora

Fedora

openSUSE

openSUSE

Ubuntu

Ubuntu

Add repository and install manually

For xUbuntu 17.04 run the following:

sudo sh -c "
echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/xUbuntu_17.04/ /' > /etc/apt/sources.list.d/cloudcross.list" sudo 
apt-get update sudo 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/xUbuntu_17.04/Release.key -O Release.key sudo apt-key add - < Release.key sudo 
apt-get update

For xUbuntu 16.10 run the following:

sudo sh -c "
echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/xUbuntu_16.10/ /' > /etc/apt/sources.list.d/cloudcross.list" sudo 
apt-get update sudo 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/xUbuntu_16.10/Release.key -O Release.key sudo apt-key add - < Release.key sudo 
apt-get update

For xUbuntu 16.04 run the following:

sudo sh -c "
echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/xUbuntu_16.04/ /' > /etc/apt/sources.list.d/cloudcross.list" sudo 
apt-get update sudo 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/xUbuntu_16.04/Release.key -O Release.key sudo apt-key add - < Release.key sudo 
apt-get update

For xUbuntu 14.04 run the following:

sudo sh -c "
echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/xUbuntu_14.04/ /' > /etc/apt/sources.list.d/cloudcross.list" sudo 
apt-get update sudo 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/xUbuntu_14.04/Release.key -O Release.key sudo apt-key add - < Release.key sudo 
apt-get update

For openSUSE Tumbleweed run the following as root:

zypper addrepo https://download.opensuse.org/repositories/home:MasterSoft24/openSUSE_Tumbleweed/home:MasterSoft24.repo 
zypper refresh 
zypper install cloudcross

For openSUSE Leap 42.3 run the following as root:

zypper addrepo https://download.opensuse.org/repositories/home:MasterSoft24/openSUSE_Leap_42.3/home:MasterSoft24.repo 
zypper refresh 
zypper install cloudcross

For openSUSE Leap 42.2 run the following as root:

zypper addrepo https://download.opensuse.org/repositories/home:MasterSoft24/openSUSE_Leap_42.2/home:MasterSoft24.repo 
zypper refresh 
zypper install cloudcross

For openSUSE Leap 42.1 run the following as root:

zypper addrepo https://download.opensuse.org/repositories/home:MasterSoft24/openSUSE_Leap_42.1/home:MasterSoft24.repo 
zypper refresh 
zypper install cloudcross

For Fedora 26 run the following as root:

dnf config-manager --add-repo https://download.opensuse.org/repositories/home:MasterSoft24/Fedora_26/home:MasterSoft24.repo 
dnf install cloudcross

For Fedora 25 run the following as root:

dnf config-manager --add-repo https://download.opensuse.org/repositories/home:MasterSoft24/Fedora_25/home:MasterSoft24.repo 
dnf install cloudcross

For Fedora 24 run the following as root:

dnf config-manager --add-repo https://download.opensuse.org/repositories/home:MasterSoft24/Fedora_24/home:MasterSoft24.repo 
dnf install cloudcross

For Fedora 23 run the following as root:

dnf config-manager --add-repo https://download.opensuse.org/repositories/home:MasterSoft24/Fedora_23/home:MasterSoft24.repo 
dnf install cloudcross

For Debian 9.0 run the following as root:

echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/Debian_9.0/ /' > /etc/apt/sources.list.d/cloudcross.list  
apt-get update 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/Debian_9.0/Release.key -O Release.key apt-key add - < Release.key 
apt-get update

For Debian 8.0 run the following as root:

echo 'deb https://download.opensuse.org/repositories/home:/MasterSoft24/Debian_8.0/ /' > /etc/apt/sources.list.d/cloudcross.list  
apt-get update 
apt-get install cloudcross

You can add the repository key to apt. Keep in mind that the owner of the key may distribute updates, packages and repositories that your system will trust (more information). To add the key, run:

wget -nv https://download.opensuse.org/repositories/home:MasterSoft24/Debian_8.0/Release.key -O Release.key apt-key add - < Release.key 
apt-get update

For CentOS 7 run the following as root:

cd /etc/
yum.repos.d/ 
wget https://download.opensuse.org/repositories/home:MasterSoft24/CentOS_7/home:MasterSoft24.repo 
yum install cloudcross

For Arch Linux, edit /etc/ pacman.conf and add the following (note that the order of repositories in pacman.conf is important, since pacman always downloads the first found package):

[home_MasterSoft24_Arch_Extra] 
SigLevel = Never 
Server = https://download.opensuse.org/repositories/home:/MasterSoft24/Arch_Extra/$arch 

Then run the following as root

pacman -Syu 
pacman -S home_MasterSoft24_Arch_Extra/cloudcross

For Arch Linux, edit /etc/ pacman.conf and add the following (note that the order of repositories in pacman.conf is important, since pacman always downloads the first found package):

[home_MasterSoft24_Arch_Core] 
SigLevel = Never 
Server = https://download.opensuse.org/repositories/home:/MasterSoft24/Arch_Core/$arch 

Then run the following as root

pacman -Syu 
pacman -S home_MasterSoft24_Arch_Core/cloudcross

Grab binary packages directly

Packages for xUbuntu 17.04:
Packages for xUbuntu 16.10:
Packages for xUbuntu 16.04:
Packages for xUbuntu 14.04:
Packages for openSUSE Tumbleweed:
Packages for openSUSE Leap 42.3:
Packages for openSUSE Leap 42.2:
Packages for openSUSE Leap 42.1:
Packages for Fedora 26:
Packages for Fedora 25:
Packages for Fedora 24:
Packages for Fedora 23:
Packages for Debian 9.0:
Packages for Debian 8.0:
Packages for CentOS 7:
Packages for Arch Extra:
Packages for Arch Core:


Or you can visit our page on GitHub for check last developers version of CloudCross.

Feedback

You can contact as at info@mastersoft24.ru or mastersoft24@yandex.ru
Questions and suggestions on the work program we can discuss on the GitHub project page.
Also, you can join to project group on Facebook

Usage

Authentication

For beginning work with CloudCross you must pass authentication on your cloud storage account (OneDrive, Google Drive, Dropbox or Yandex Disk of Cloud Mail.ru) for allow an application to use it. Run CloudCross with -a option (for provider definition use option --provider PROVIDER_NAME)
ccross -a
or for example for dropbox authenticate
ccross -a --provider dropbox
As response, the application will return something like this
-------------------------------------
Please go to this URL and confirm application credentials

https://accounts.google.com//ServiceLogin?passive=1209600&continue=https://accounts.google.com/o/oauth2/v2/auth?access_type%3Doffline%26approval_prompt%3Dforce%26scope%3Dhttps://www.googleapis.com/auth/drive%2Bhttps://www.googleapis.com/auth/userinfo.email%2Bhttps://www.googleapis.com/auth/userinfo.profile%2Bhttps://docs.google.com/feeds/%2Bhttps://docs.googleusercontent.com/%2Bhttps://spreadsheets.google.com/feeds/%26response_type%3Dcode%26redirect_uri%3Durn:ietf:wg:oauth:2.0:oob%26state%3D1%26client_id%3D8344155748-oq0p2m5dro2bvh3bu0o5bp19ok3qrs3f.apps.googleusercontent.com%26hl%3Dru%26from_login%3D1%26as%3D4ee15e216c8734fd<mpl=nosignup&oauth=1&sarp=1&scc=1
Copy this URL to your browser and go to on it. Next, enter your password and press "Accept" button. As a result, the authentication code will be sent to an application. If all is successful, the application will report this.

Attention: .
For Cloud MAIL.RU you must use --login and --password parameters. In this case, authentication flow looks like this:
ccross -a --provider mailru --login your_login --password=your_password
Now CloudCross is ready to work.

Synchronization

For synchronization, you enough run a program with defined --provider option.
ccross
or (for example)
ccross --provider dropbox
Please note! If you run synchronization in an empty folder, do not forget to use the --prefer=remote option.
Or, since version 1.0.4, you can use the --force option.
But CloudCross allows you to configure the sync process. Advanced options are used for this purpose.

Options

Synchronization options

--no-hidden do not sync hidden files and folders
--dry-run shows which files will be loaded/unloaded, but really do not synchronize
--prefer arg set sync strategy. What to have priority-local or remote. Can be one of "local" or "remote"
--use-include use a .include file with a list of files that will participate in synchronization.
--path arg the absolute path to synchronize directory.
--no-new-rev do not create a new version of the file on a server, but overwrite him when file upload
--convert-doc convert docs when syncing from MS/Libre/Open Office format to Google Docs and back
--force arg Forcing upload or download files. It can be a one of "upload" or "download". This option overrides --prefer option value.
--provider arg Selects one of supported cloud providers. It option can be a one of "yandex", "onedrive" ,"google","dropbox" or "mailru" . By default this option value is "google".
--direct-upload url remote_path Allow upload file directly to cloud from URL.
All options, except --provider and --path, are ignored.
Uploaded file will be stored on remote storage into a location which was defined by remote_path.
NOTE: OneDrive does not support direct uploading.
--login your_login Set login for access to a cloud provider.
At this moment it used only for Cloud Mail.ru
--password your_password Set password for access to a cloud provider.
At this moment it used only for Cloud Mail.ru
--http-proxy arg Use HTTP proxy server for connection to a cloud provider.
arg must be in a ip_address_or_host_name:port_number format
--socks5-proxy arg Use socks5 proxy server for connection to a cloud provider.
arg must be in a ip_address_or_host_name:port_number format

Other options

--help print short help message
--version print a CloudCross version
--list print remote file list. Can be used for .include/.exclude file creation
--auth Google Drive athentication
--cloud-space Show total and free spase of cloud.

File priority

By default CloudCross working in local files priority mode. This means what if you delete a file on remote, then the next time sync this file will be uploaded to the cloud. And if you delete a file on your computer, it will be removed on cloud storage.
In remote file priority mode, the application behavior is opposite.

.include and .exclude files

If you do not specify the --use-include option, CloudCross tries to find the .exclude file and if it finds that uses it for synchronization. File list who contains in .exclude file, in fact, is a black list. All files in this file will be excluded from sync.
.include file, an opposite, is a white list. In this case, will be synchronized only the files listed in it.
.include and .exclude file format is extremely simplest. This is just list relative paths of files and folders.
Example of it, you can view if run:
ccross --list
In the paths list you can use wildcard

File versioning control

By default Google Drive creates a new version for each of downloaded files, preserving the previous version of those files. All these versions are stored on the server for some time, occupying the free space.
But you can change this behavior, using --no-new-rev option when synchronizing.
Thus when a file is uploaded to the server, the new version will not be created and will be overwritten with the latest version of this file.
This option works only with Google Drive.

File format conversion

CloudCross provides the possibility of converting files when uploading into Google Drive from Microsoft Office or Open/Libre Office formats to Google Docs format, that allows you to continue working with them online.
Then, during the next synchronization, this files will be converted back to correspond formats.
Formats of Text documents, Spreadsheets and Presentations are supported.

But using this feature you must remember following, the conversion from the Google Docs formats to Office formats going on so that every time you get files with different checksum, with the same source file.
This feature and the fact that after uploading the file last modification time is more than local file time, lead to the fact that during the next synchronization, the program considers the file on the server is newer, compared to the local version, and download it.
A similar situation happens on the local side. All this lead to the fact that at each sync file will be uploaded/downloaded, despite the fact that it remains the same.

Possibly in next releases this feature is be fixed.
This option works only with Google Drive.

Provider selecting

Since version 1.1.0 you can select cloud service to work. For cloud selection, you can use an option
--provider
Available providers list see in option description.

Direct uploading files into cloud

CloudCross allow you do make a direct uploading files to clouds from given URL. For use this purpose you can option --direct-upload. All options, except --provider and --path, are ignored.
This option is two required parameters
URL - direct link for file downloading. Links which pointed to pages for redirect to download (shared Yandex.Disk files, for example), not supported yet.
PATH - path in cloud, where downloaded file will be stored. For example /Downloads/Arhives/somefile.zip or /install.exe. Name for downloaded file you can define yourself.
 
Change log:
v1.4.0 OneDrive support added.
Showing total and free space of clouds
v1.3.1 Fix some Mail.Ru working errors
Remove necessity for definition login and password for each Mail.ru operation. Now it needed only for authentication
v1.3.0 Cloud Mail.ru support added.
Added options for proxy servers using (--http-proxy and --socks5-proxy)
v1.2.4 Change authentication mechanism to authenticate with using local listener.
Added statistic collecting.
Changed license type to BSD.
v1.2.3 Change path for authorization on Google Drive.
Change/fix random generator algorithm.
Some minor refactoring..
v1.2.2 Possibility building and working on Windows.
Fix build error on certain systems on wrong implicit conversion from char* to QString in QJsonValue::insert() method.
Fix build warning messages.
Fix to work with Google Drive access token without lifetime limit.
v1.2.1 --direct-upload option added. This option allows you upload files from URLs directly to cloud.
v1.2.0 Yandex.Disk support added
v1.1.0 Dropbox support added
--force​ option behavior corrected
v1.0.4 Added a --force option to force a download or upload files and folders.
v1.0.3 Enhance working with .include and .exclude lists
v1.0.2 Added --no-new-rev option for server side versioning control
Added --convert-doc option for auto conversion from office formats (MS/Open) to Google Doc and back.
v1.0.1-rc3 fixed bug with threads count overhead.
fixed bug with a corruption of downloaded files
v1.0.1-rc2 bugs fixed
v1.0.1-rc1 first pre-release version of CloudCross