2015-04-01

Google Drive App for Linux (and Mac)

I hate desktop-cloud synchronization applications.
Google's Drive Sync application is only available for Mac and Windows.  I don't care.

I have about two terabytes of files in cloud storage.  I have several different machines with very different purposes—desktops, laptops, servers, mobile devices—and I only want to store files locally if I'm actually going to use them for something.

Automatic sync, as in Dropbox or the official Google Drive app for Windows or Mac, is the absolute worst.  I don't want to waste bandwidth syncing incremental changes.  I want control over sync prioritization—often a huge .iso can wait, but I need that 50kb text file as soon as I get home.  Most of all, and especially important with the proliferation of online cloud editing tools, I can NEVER tolerate the possibility of a race condition if it's autosyncing while I'm editing online.

I'm a power user.  I hate graphical interfaces.  As Google Drive and Dropbox add features and accumulate more and more of my files, the GUIs slow down.  As my folder structures get deeper and deeper, it takes longer and longer to dig down to the files I need.  File management from the graphical interface is slow and can't be scripted.  If I'm pushing stuff to Drive from a remote machine, I DEFINITELY don't want to mess with a GUI.

I need a command line tool.  Google, through unofficial channels, has delivered.



drive - Command Line Google Drive Push/Pull Utility


Originally written by GitHub:rakyll, formerly of the Google Drive team, the aptly-named drive app is now actively developed by GitHub:odeke.  The README explains it all.  It works for Linux and Mac!

Installation in Ubuntu:

This application is written in Google's Go! language, so you need to install that and designate a home directory with the $GOPATH environmental variable before you install drive.  For ease-of-use, you can then symlink the drive executable somewhere that's already in the system $PATH or add  $GOPATH/bin to the system $PATH.

$ sudo apt-get install golang git mercurial
$ mkdir -p /home/brandon/bin/go
$ GOPATH=/home/brandon/bin/go
$ export GOPATH
$ go get -u github.com/odeke-em/drive/cmd/drive
$ sudo ln -s /home/brandon/bin/go/bin/drive /usr/local/bin/drive
$ mkdir -p ~/drive/gmail
$ drive init ~/drive/gmail

You can then push and pull files to and from Drive with ease:

$ cd ~/drive/gmail
$ drive push folder/file
$ drive pull folder/folder/file

Double-bonus: you can push and pull from as many Google accounts as you want!
If you want to sync everything, just run drive pull from the root folder and pull it allll down.  It checks for changes, so it'll only resync things that have changed.

$ mkdir ~/drive/work

$ drive init ~/drive/work

$ mkdir ~/drive/org
$ drive init ~/drive/org

You can also share, trash, move, rename, generate file lists and statistics, export Google Docs formats to other filetypes, and do lots of other stuff.  See the README.

HowToGeek complains that the tool is limited.  Sure it is, if you're my grandma.

If you are my Grandma, check out something open source like grive or google-drive-ocamlfuse (free), or something proprietary like InSync ($15 per account, one-time).