google-drive-ocamlfuse

A FUSE filesystem over Google Drive
README

google-drive-ocamlfuse is a FUSE filesystem backed by Google Drive,
written in OCaml. It lets you mount your Google Drive on Linux.

Features (see what's new in version 0.6.x)

  • Full read/write access to ordinary files and folders

  • Read-only access to Google Docs, Sheets, and Slides (exported to
    configurable formats)

  • Multiple account support

  • Duplicate file handling

  • Access to trash (.Trash directory)

  • Unix permissions and ownership

  • Symbolic links

  • Read-ahead buffers when streaming

  • Accessing content shared with you (requires configuration)

Resources

  • Homepage

  • Wiki: includes
    installation instructions, and more details about configuration, and
    authorization

Authorization

Please be sure to have a look at the
authorization
page, to understand how the authorization process works, and to discover all
the available options.

Getting started

Installation

I've uploaded .deb packages for Ubuntu to my
PPA. In order to to
install it, use the commands below:

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

New beta versions are available on this
PPA.
If you want to test them, use the commands below:

sudo add-apt-repository ppa:alessandro-strada/google-drive-ocamlfuse-beta
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

For other installation options, please refer to the wiki.

How to build

Requirements

Configuration and installation

To build the executable, run

jbuilder build @install

To install it, run (as root, if your user doesn't have enough privileges)

jbuilder install

To uninstall anything that was previously installed, execute

jbuilder uninstall

Usage

The first time, you can run google-drive-ocamlfuse without parameters:

google-drive-ocamlfuse

This command will create the default application directory
(~/.gdfuse/default), containing the configuration file config (see the
wiki
page

for more details about configuration). And it will start a web browser to
obtain authorization to access your Google Drive. This will let you modify
default configuration before mounting the filesystem.

Then you can mount the filesystem:

google-drive-ocamlfuse mountpoint

If you have more than one account, you can run:

google-drive-ocamlfuse -label label [mountpoint]

Using label to distinguish different accounts. The program will use the
directory ~/.gdfuse/label to host configuration, application state, and file
cache. No file is shared among different accounts, so you can have a different
configuration for each one.

To unmount the filesystem, issue this command:

fusermount -u mountpoint

Troubleshooting

This application is still under testing, so there are probably bugs to
discover and fix. To be extra sure, if you want, you can mount the filesystem
in read-only mode, modifying the configuration (see the
documentation),
to avoid any write attempt to the server. Anyway, the rm command will simply
trash your file, so you should always be able to rollback any changes. If you
have problems, you can turn on debug logging:

google-drive-ocamlfuse -debug mountpoint

In ~/.gdfuse/default you can find curl.log that will track every request
to the Google Drive API, and gdfuse.log that will log FUSE operations and
cache management. If something goes wrong, you can try clearing the cache,
with this command:

google-drive-ocamlfuse -cc

If something still doesn't work, try starting from scratch removing everything
in ~/.gdfuse/default. In this case you will need to reauthorize the
application.

Note that in order to reduce latency, the application will query the server
and check for changes only every 60 seconds (configurable). So, if you make a
change to your documents (server side), you won't see it immediately in the
mounted filesystem.

Note also that Google Documents will be exported read-only.

Support

If you have questions, suggestions or want to report a problem, you may want
to open an issue
on github.

Install
Published
09 Jan 2018
Sources
v0.6.23.tar.gz
md5=f57304d1b2885392ecc967353c6003d4
Dependencies
ounit
with-test
extlib
< "1.7.8"
ocamlfuse
< "2.7.1-cvs6"
jbuilder
>= "1.0+beta7"
gapi-ocaml
>= "0.3.6" & < "0.4.0"
camlidl
build
ocaml
with-test & < "4.12"
ocaml
>= "4.02.3"
Reverse Dependencies