/gsync

RSync for Google Drive - GSync

Primary LanguagePythonOtherNOASSERTION

GSync 0.1.0
29 March 2013

Copyright (C) 2013 Craig Phillips.  All rights reserved.

Google currently don't produce a Linux variant of their client for Google-Drive.
This is my implementation of a multiplatform, command line tool that for the
most part, is intended to behave much like rsync.  I aim to follow the same
functional implementation of rsync and also provide the same features, enabled
or disabled through a similar interface of command line options.

There was a close contender for being a suitable client called grive.  This is
ideal if you only intend to sync a small library of files or if the files being
synchronised are small in size.  I found the client to be unreliable in other
cases, crashing and failing to synchronise very little.  I looked over much of
the code and found that it favours preloading with a hash of the directory to
be synchronised and all sub directories, before it even synchronises any files.
This creates a scenario where synchronisation will never take place if the
preloading fails.  Instead, I will opt to process directories depth first and
sequentially in order to allow synchronisation to occur immediately.

The only prerequisite is that you have python.  The makefile will take care of
installing any required python libraries using pip, which will also be obtained.

Donations:
-------

If you like the software, don't forget to donate to further development of it!

https://github.com/iwonbigbro/gsync/wiki/Donate

My Blog:
--------

http://mud-slide.blogspot.co.uk/

RSync options implemented so far:
---------------------------------

 -v, --verbose               enable verbose output
     --debug                 enable debug output
 -q, --quiet                 suppress non-error messages
 -r, --recursive             recurse into directories
 -R, --relative              use relative path names
 -u, --update                skip files that are newer on the receiver
 -d, --dirs                  transfer directories without recursing
 -g, --group                 preserve group
 -o, --owner                 preserve owner (super-user only)
 -p, --perms                 preserve permissions
 -i, --itemize-changes       output a change-summary for all updates
     --progress              show progress during transfer

Fixed:
------

 * Traversal of the Google drive is now more reliable and requires less CPU
   and network requests.
 
 * Intermediate directory creation now occurs through a restructure of the
   directory walking code, ensuring directories are provided to the callback.
 
 * Itemized output now occurs without needing to specify the verbose option.

 * Interrupt handling now works, so Ctrl-C will halt the sync and output the
   progress (bytes sent/received) up to the interrupt.

 * Implemented --progress functionality so that upload progress can be
   monitored.

 * Fixed Bug: "Syncs one file and crashes with division by zero error"

 * Fixed Bug: "Always: Error: String or Integer object expected for key,
               unicode found"
 
 * Fixed Bug: "BUG: Files get updated that are in Trash and do not get
               restored."

To do:
------

 * Better handling of resumable uploads (--append).

 * Improved file attribute handling using Google Drive file attributes data.

Issues:
-------

 * Append mode doesn't work, this is not supported by Google Drive.  May be able
   to work around it by caching the resumable upload ID somewhere locally when
   a file is being synchronised.
 
 * Some features still not implemented.