The goal of this project is to build a robust user-friendly tool to upload directories into Google Drive, and subsequently update them in an efficient way.
It is a complement to the provided web-based interface to Google Drive (referred to as simply Drive thereafter) and it must not be regarded as an alternative to it. Drive Uploader offers a means of mirroring local directories to Drive and to efficiently update the remote data in an effortless manner, i.e., upload only the files that are missing and overwrite only the files that have changed. Some questions? You might be interested in reading the FAQ.
The motivations behind developing this modest piece of software is discussed in the recent post Mirroring Local Directories to Google Drive. To summarise, it is currently hard to efficiently mirror a local wide and deep folders tree structure filled in with a massive quantity of files to Drive… Drive Uploader is to complement the existing web-based interface to solve this problem.
If you do not use the sync tool1, then you are fine. Otherwise, create a folder in Drive (e.g., using the web-based interface), let’s name it Backups (any name is fine), and on all the local clients set the Google Drive local folder so that it does not synchronise the directory Backups. Further discussions on how to do that can be found in Choose what syncs to your computer.
Bear in mind that not doing so might lead to some undesirable outcome. Specifically, the Drive Uploader application will upload files, while the Google Drive local application will synchronise those same files to the Google Drive local folder… Nothing harmful, but a very inefficient way to copy files between folders on the same computer. Besides, in all likelihood, it is not what you were trying to achieve! A potential risk, though, is to run out of free space on the local hard drive…
|Mac OS X||1.0||App Bundle||10 Nov. 2014||170 MB||dmg|
|Mac OS X||1.0||App Bundle||10 Nov. 2014||69 MB||pkg|
|Windows (x64)||1.0||Installer||10 Nov. 2014||84 MB||msi|
|Windows (x64)||1.0||Installer||10 Nov. 2014||60 MB||exe|
|All*||1.0||Executable Jar||10 Nov. 2014||8 MB||jar|
The installers (Windows) and the app bundle (Mac OS) are coming with their own embedded JRE; therefore, there is no need to install any additional components (i.e., the JRE 8).
In order to use the jar file, after making sure that your machine has the Java SE 8 JRE installed (e.g., by using the command java -version), just double click on the jar file; or, alternatively, use the command:
If you have to deal with a gigantic number of files, the default maximum heap size of the JVM might not be sufficient. Assuming that enough RAM are available, the option -Xmx\<size\> can be used to specify a greater limit, e.g.,
Note: older versions can be downloaded here.
A few Details
The Google Drive API v2
There is a known nasty bug in the Drive API (). Very surprisingly the appearances suggest that this bug might not be resolved within an acceptable period of time (it has already been reported many months ago, well over a year, and the thread is not very active… as of october 2014). Basically, it is not possible to reliably upload large files (by following the official guide: Resumable upload), for after one hour the 401 Unauthorized error consistently occurs (apparently it is not possible to resume the process once this error has occurred, refreshing the token does not help).
To overcome this major issue, we rely on the old and deprecated protocol Resumable Media Uploads in the Google Data Protocol. The bug appears not to affect this old API.
License and Source Code
Mac OS X
Further Related Readings
This software is currently being actively developed. The current version 1.0, as well as all the anterior versions, may bear imperfections and may lack stability. We encourage the users to carefully read the license, and in particular the point 7.
Should you find some issues, please report them using the dedicated GitHub issue tracker.
Note that this issue tracker can also be used to request new features you may need.
This application reuses some source code from:
- Google APIs Client Library for Java, © 2011 Google Inc. (Apache v2)
- Drive API Command-Line Sample, © 2011 Google Inc. (Apache v2)
- GDriveUpload, © 2014 Dirk Boye (Apache v2)