当前位置: 首页>>技术教程>>正文


grive 同步错误,可能是 google API shift

, ,

问题描述

我无法从运行在 Ubuntu 14.04 上的 grive 与我的谷歌驱动器帐户同步。我以前从来没有遇到过问题。我尝试从我的系统中清除驱动器并删除所有本地文件夹,但是当我在重新安装后尝试运行 grive 时仍然会遇到这个问题。

user@user-OptiPlex-780:~/drive$ grive
grive: Symbol `json_tokener_errors' has different size in shared  object, consider re-linking
Reading local directories
Synchronizing folders
exception: /build/buildd/grive-0.2.0/libgrive/src/http/CurlAgent.cc(149): Throw in function long int    gr::http::CurlAgent::ExecCurl(const string&, gr::http::Receivable*, const   gr::http::Header&)
Dynamic exception type:boost::exception_detail::clone_impl<gr::http::Error>
std::exception::what: std::exception
[gr::expt::MsgTag*] = 
[gr::http::CurlCodeTag*] = 0
[gr::http::HttpResponseTag*] = 400
[gr::http::UrlTag*] = https://docs.google.com/feeds/default/private/full/-/folder?max-results=50&showroot=true
[gr::http::HeaderTag*] = Authorization: Bearer ya29.WwFOho3OkmkxFIdn86HBbtpSIyBYDzDgQua1K6JcEu7kCBLgvY1aEiUHCZlSCuli_qPHkTfNZLhDfQ
GData-Version: 3.0

这是指向 Google 开发人员页面的链接,该页面表明 API 今天已更改 link。这可能是个问题吗?

最佳办法

是的,Grive 使用的是已失效的文档列表 API。从太平洋标准时间上午 9 点左右开始,我们停止为这些 API 请求提供服务。这就是 Grive 客户端收到“400 Bad Request”响应的原因。

查看 project ,它似乎是 unmaintained for almost a year 并且绝对没有更新( here & here )到 2012 年正式弃用文档列表时发布的新 API。

次佳办法

一个好的替代方案可能是 drive,它是用 go 编写的,具有很多功能。

要安装,请遵循以下说明:

  1. 安装需要的包

    \n

    sudo apt-get install golang git mercurial\n
  2. 在您的主目录中为 go 包创建一个路径

    \n

    mkdir $HOME/go $HOME/go/bin\n
  3. 通过编辑主目录中的文件 .profile,将这些路径添加到适当的环境变量中。因此,在该文件的和处添加这些行:

    \n

    if [ -d "$HOME/go" ] ; then\n    export GOPATH="$HOME/go"\nfi\n\nif [ -d "$HOME/go/bin" ] ; then\n    PATH="$HOME/go/bin:$PATH"\nfi\n
  4. 注销并重新登录以使更改生效。

  5. 从最新源下载并安装 drive

    \n

    go get -u github.com/odeke-em/drive/cmd/drive\n
  6. 读取 https://github.com/odeke-em/drive/#usage\n基本用法:\n

    • drive init <folder> 初始化 <folder> 以与您的 Google 云端硬盘同步。

    • 如果您在初始化文件夹中执行 drive pull,它将从 Google 云端硬盘下载所有更改。第一次,您可能需要多次执行此操作才能下载所有内容。

    • drive push 上传本地更改。

    • drive pull <fileOrPath>drive push <fileOrPath> 仅对 <fileOrPath> 执行相应操作。

    • 还有更多选项可供使用,因此请阅读手册。

第三种办法

Grive 的一个 fork 又可以工作了(不是我做的,刚找到的)

https://github.com/vitalif/grive2

更换方便

mkdir grive 
cd grive/
git clone https://github.com/vitalif/grive2.git
cd grive2/
mkdir build 
cd build 
cmake ..
make -j4
sudo make install

现在 grive 对我来说很好用。

第四种办法

类似于 grive 的解决方案是 jdrivesync 。您可以在其 github 页面上下载副本。

要运行 jdrivesync,请执行以下步骤:

  1. 安装 Java

  2. 下载 jdrivesync

  3. java -jar jdrivesync-0.2.2-jar-with-dependencies.jar -l "/home/directory-to-sync" 运行

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13347.html,未经允许,请勿转载。