Изменения

Grive2

5765 байтов добавлено, 15:49, 24 мая 2021
м
Нет описания правки
Welcome to the Grive2 project homepage!
The purpose of this project is to provide an independent open source implementation of Google Drive client for GNU/Linux. It uses the [https://developers.google.com/drive/v2/reference/ Google Document List Drive REST API ] to talk to the servers in GoogleDrive service. The code is written in standard C++.
Grive2 is the fork of the original abandoned «Grive» (https://github.com/Grive/grive) with added support for the new Drive REST API (original version was using the «Document List API» which is now shut down) and some new features, for example , partial sync.
The source code of Grive2 is released under GPLv2.
== Features ==
* Grive Grive2 can do two-side synchronization between the Google Drive and local directory: it can download and upload changed files, create new directories, and move deleted files to trash.* Dry run: you can see what actions Grive Grive2 wants to perform with your files without really performing them (--dry-run option).* You can select Sync a single subdirectory to sync with '-s subdir' option and you can exclude .* Ignore/select some files from sync with '--ignore <regexp>' optionvia . <regexp> has [http://perldocgriveignore.perl.org* Limit upload/perlredownload speed.html perl regexp syntax] and * There is matched against local path inside synced root directorya contributed inotify wrapper script for continuous sync.
== Limitations ==
; Folders/files with multiple parents: The structure of a Google Drive is not exactly organized in a hierarchy. It is more similar to an interconnected net attached to a single root point (quoted from the API reference). Obviously the files and directories in the file system have only one parent. Therefore, this feature cannot be implemented very easily.
; Folders/files with '/' in name: '/' is the directory separator and cannot be used in file names.
; Multiple folders/files with the same name: Current Grive Grive2 behaviour is undefined with such files.
; Downloading Google Documents: This feature is not currently implemented. If the demand for it is big enough, it may be implemented later. Patches are welcomed.
== Installation ==
The following are instructions for compiling from the very latest «master branch» source and running `grive ` in Debian/Ubuntu/Linux Mint.
=== Get dependencies ===
Then you You need to get the dependency libraries along with their development (-dev or -devel) packages:* [http://lloyd.github.io/yajl/ yajl]2.x
* libcurl
* STL (libstdc++)
* libgcrypt
* Boost (filesystem, program_options and , regex, unit_test_framework and system)
* expat
* libbfd (for backtrace)
* binutils (for libiberty, required for compilation in OpenSUSE, Ubuntu, Arch and etc)
 
And tools:
* Git
* CMake
* C++ compiler (g++ or clang)
On a Debian/Ubuntu/Linux Mint machine just install the following packages:
<tt>sudo apt-get install git cmake build-essential libgcrypt11-dev libyajl-dev libboost-filesystem-dev libboost-program-options-dev libboost-regexall-dev libcurl4-openssl-dev libexpat1-dev libcppunit-dev binutils-devpkg-config zlib1g-dev</tt> FreeBSD: <tt>pkg install git cmake boost-libs yajl libgcrypt pkgconf cppunit libbfd</tt> === Build debian package === Source repository already contains debian packaging scripts. So, to build the debian package, install <tt>dpkg-dev</tt> and run <tt>dpkg-buildpackage -j4</tt> in the source directory. *.deb package will be generated in the parent directory.
=== Download sources ===
First, * Either checkout the master branchwith git: <tt>git clone https://github.com/vitalif/grive2</tt> or * Or [https://github.com/vitalif/grive2/archive/master.zip download it in a ZIP archive] and unpack it in to some directory.
=== CMake ===
{{Note}} Check out this [http://git-scm.com/book git book] for more info about git, if you don't know what it is.
Note that there can be a delay in updating the tarball archive (tar.gz ZIP button on upper bottom right) at [http://grive.github.com/grive/ http://grive.github.comvitalif/grivegrive2/], and it may not have the very latest. Pulling from git ensures the very latest.
== Usage ==
=== Backup ===
Since grive is still "beta" «beta» or "alpha", so «alpha» you should better keep a backup copy of your google directory.
=== First run ===
You can set up a cron job, if you want this done on a regular basis.
 
If you get a «crash» (bunch of error messages on the screen), create an issue on github: https://github.com/vitalif/grive2/issues/new. Attach program output from the console; also you can run <tt>grive -l log.txt</tt> and also submit 'log.txt'. As the file will contain a log of the sync operation, you may want to edit the file first to remove personally sensitive information.
=== Command line options ===
<tab sep="bar" class="wikitable" head="toplefttop">
Short option | Long option | Description
-h | --help | Produce help message
-v | --version | Display Grive version
-a | --auth | Request authorization token
-p arg | --path arg | Path Root directory to sync-s arg | --dir arg | Subdirectory Single subdirectory to sync(remembered for next runs)
-V | --verbose | Verbose mode. Enable more messages than normal.
| --log-xml http arg | Log more all HTTP responses as XML in this file for debugging.
| --new-rev | Create new revisions in server for updated files.
-d | --debug | Enable debug level messages. Implies -v.
-f | --force | Force grive to always download a file from Google Drive instead of uploading it.
| --dry-run | Only detect which files need to be uploaded/downloaded, without actually performing them.
| --ignore arg | Ignore Perl RegExp to ignore files (matched against relative paths of which match this Perl RegExp, remembered for next runs).
</tab>
 
== Reporting bugs ==
 
If you get some kind of «crash» (bunch of error messages on the screen), please run grive with the following options:
grive -l log.txt --log-http http
 
`log.txt` and `httpXXXX-XX-XX.XXXXXX.txt` files will be created. Please note these files may contain authentication tokens and file contents, so edit them before submitting.
 
Then create an issue on github: https://github.com/vitalif/grive2/issues/new and attach these files.
 
== TODO ==
 
* (Maybe) Implement «daemon mode» for continuous sync without running grive many times
 
== Version History ==
 
=== Grive2 v0.5.1 ===
 
* Support for .griveignore
* Automatic sync solution based on inotify-tools and systemd
* no-remote-new and upload-only modes
* Ignore regexp does not persist anymore (note that Grive will still track it to not accidentally delete remote files when changing ignore regexp)
* Added options to limit upload and download speed
* Faster upload of new and changed files. Now Grive uploads files without first calculating md5 checksum when file is created locally or when its size changes.
* Added -P/--progress-bar option to print ASCII progress bar for each processed file (pull request by @svartkanin)
* Added command-line options to specify your own client_id and client_secret
* Now grive2 skips links, sockets, fifos and other unusual files
* Various small build fixes
 
=== Grive2 v0.5 ===
 
* Much faster and more correct synchronisation using local modification time and checksum cache (similar to git index)
* Automatic move/rename detection, -m option removed
* force option works again
* Instead of crashing on sync exceptions Grive will give a warning and attempt to sync failed files again during the next run.
* Revision support works again. Grive 0.4.x always created new revisions for all files during sync, regardless of the absence of the --new-rev option.
* Shared files now sync correctly
 
=== Grive2 v0.4.2 ===
 
* Option to exclude files by perl regexp
* Reimplemented HTTP response logging for debug purposes
* Use multipart uploads (update metadata and contents at the same time) for improved perfomance & stability
* Bug fixes
* Simple option to move/rename files and directories, via `grive -m oldpath newpath` (by Dylan Wulf, wulfd1@tcnj.edu)
 
Known issues:
* force option does not work as documented [https://github.com/vitalif/grive2/issues/51 #51]
 
=== Grive2 v0.4.1 ===
 
* Bug fixes
 
=== Grive2 v0.4.0 ===
 
First fork release, by Vitaliy Filippov / vitalif at mail*ru
* Support for the new Google Drive REST API (old «Document List» API is shut down by Google 20 April 2015)
* REAL support for partial sync: syncs only one subdirectory with `grive -s subdir`
* Major refactoring — a lot of dead code removed, JSON-C is not used anymore, API-specific code is split from non-API-specific
* Some stability fixes from Visa Putkinen https://github.com/visap/grive/commits/visa
* Slightly reduce number of syscalls when reading local files.
 
=== Grive v0.3.0 ===
 
Bug fix & minor feature release. Fixed bugs:
* #93: missing reference count increment in one of the Json constructors
* #82: retry for HTTP error 500 & 503
* #77: Fixed a bug where grive crashed on the first run.
 
New features:
* #87: support for revisions
* #86: <s>partial sync (contributed by justin at tierramedia.com)</s> that’s not partial sync, that’s only support for specifying local path on command line
 
== Contributing ==
 
Please send pull requests here: https://github.com/vitalif/grive2/
 
== Full list of contributors ==
 
Maintainers:
* Vitaliy Filippov (vitalif *at* yourcmc.ru) 08.09.2013 — NOW
* Nestal Wan (me *at* nestal.net) 16.05.2012 — 03.05.2013
* Matchman Green (match065 *at* gmail.com) 26.04.2012 — 20.06.2012
 
Contributors:
* Dylan Wulf (wulfd1 *at* tcnj.edu)
* Visa Putkinen (visa.putkinen *at* reaktor.fi)
* justin (justin *at* tierramedia.com)
* Stephen Cox (stephencoxmail *at* gmail.com)
* Jan Winkler (winkler *at* informatik.uni-bremen.de)
* Caleb Maclennan (caleb *at* chiefworks.com)
* Ben L (nightgunner5 *at* llamaslayers.net)
* Georges Dubus (georges.dubus *at* compiletoi.net)
* georg wiltschek (georg.wiltschek *at* gmail.com)
* Erik Hardesty (dalingrin *at* gmail.com)
* José Luis Segura Lucas (josel.segura *at* gmx.es)
* LemonBoy (thatlemon *at* gmail.com)
* manuken (jesus.bustos *at* adminlinux.org)
* Eshwar Andhavarapu (gontadu *at* gmail.com)
* Andrea Scarpino (andrea *at* archlinux.org)
* Sunnywout (woutervdb97 *at* gmail.com)
* Massimo Gengarelli (gengarel *at* cs.unibo.it)
 
== License ==
 
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
== Privacy Policy ==
 
Grive2 use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
 
Grive2 is a local application and its main purpose is to allow users to sync local directories with their Google Drive. This is why Grive2 requires APIs moved to the 'Restricted Scope' by Google in 2019.
 
Grive2 doesn't contain advertising features, never collects user data and never sends it to any network servers except Google's own servers (https://www.googleapis.com/). Because of that, Grive2 developers don't have access to the users' data too.