Rat's

解决Rclone挂载Google Drive时上传失败和内存占用高等问题
说明:之前看到有些人评论使用Rclone挂载Gdrive时,会出现部分文件上传失败和挂载崩掉等问题,后者在挂载On...
扫描右侧二维码阅读全文
29
2019/01

解决Rclone挂载Google Drive时上传失败和内存占用高等问题

说明:之前看到有些人评论使用Rclone挂载Gdrive时,会出现部分文件上传失败和挂载崩掉等问题,后者在挂载OneDrive时也会出现,所以这里就专门花了点时间测试了下这些问题,然后就水个解决方法。一般挂载Gdrive的时候,默认是使用的官方提供的api,所以高峰期上传文件的时候,由于很多人在用,导致api的流量上限,会出现各种403ratelimit等错误,最常见的报错提示为:Failed to get file: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded,然后目前的解决方法就是使用自己的api。至于挂载崩掉的问题是可以通过调整部分参数来解决,这里就都一起说下。

方法

首先获取谷歌API凭据,获取方法在之前很多文章都提过,这里就直接复制粘贴了,先启用Google Drive API,启用地址:点击进入
请输入图片描述

再创建一个OAuth client ID,创建地址:点击进入。应用类型选择其他(Other),名称自己填,这里博主填的Rclone
请输入图片描述

然后你会获得自己的客户端ID和客户端密钥,再复制下来。
请输入图片描述

然后使用rclone config命令配置的时候,会有部分提示:

#直接将你获取到的客户端id和密匙输进去即可
Google Application Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> #输入客户端id
Google Application Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> #输入客户端密匙

最后打开配置时的链接授权时候,就会显示我们自己设置的应用名称。

然后挂载命令如下:

#该参数主要是上传用的
/usr/bin/rclone mount DriveName:Folder LocalFolder \
 --umask 0000 \
 --default-permissions \
 --allow-non-empty \
 --allow-other \
 --transfers 4 \
 --buffer-size 32M \
 --low-level-retries 200

#如果你还涉及到读取使用,比如使用H5ai等在线播放,就还建议加3个参数,添加格式参考上面
--dir-cache-time 12h
--vfs-read-chunk-size 32M
--vfs-read-chunk-size-limit 1G

主要参数这里大概说下,具体自己根据vps配置进行调整。

--transfers:该参数控制最大同时传输任务数量,如果你cpu性能差,建议调低,但太低可能会影响多个文件同时传输的速度。
--buffer-size:该参数为读取每个文件时的内存缓冲区大小,控制rclone上传和挂载的时候的内存占用,调低点可以防止内存占用过高而崩溃,但太低可能会影响部分文件的传输速度。
--low-level-retries:该参数为传输文件没速度的时候重试次数,没速度的时候,单个会自动睡眠10ms起,然后再重试,不行,再睡眠更长一段时间,再重试,这样可以稍微加快文件上传进度。

如果你还不会使用rclone挂载,或者不会设置开机自启的,可以参考该篇文章的部分内容→传送门

最后博主使用了自己的api后,上传测试了700G上限,基本一次也没出过403等一些问题了,内存占用也还不高,不过限制了些参数后,体验肯定会差点。至于Onedrive,博主也测试了下,貌似还没遇到上传问题,可能是使用rclone挂载的人数没gdrive多吧,至于其他问题也可以参考下本文设置。

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2019 年 01 月 29 日 11 : 27 PM

发表评论

77 条评论

  1. Lyric

    博主,用Systemctl守护进程我一直就成功不了。
    rclone.service - Rclone
    Loaded: loaded (/etc/systemd/system/rclone.service; disabled)
    Active: failed (Result: exit-code) since Tue 2019-02-12 16:29:27 CST; 3s ago
    Process: 30141 ExecStop=/bin/fusermount -u /home/Gdrive (code=exited, status=1/FAILURE)
    Process: 30135 ExecStart=/usr/bin/rclone mount Irelia:/ /home/Gdrive --umask 0000 --default-permissions --allow-non-empty --allow-other --transfers 4 --buffer-size 128M --low-level-retries 200 --dir-cache-time 12h --vfs-read-chunk-size 32M --vfs-read-chunk-size-limit 1G (code=exited, status=1/FAILURE)
    Main PID: 30135 (code=exited, status=1/FAILURE)

    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 ERROR : Couldn't find home directory or read HOME or XDG_CONFIG_HOME environment variables.
    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 ERROR : Defaulting to storing config in current directory.
    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 ERROR : Use --config flag to workaround.
    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 ERROR : Error was: user: Current not implemented on linux/amd64
    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 NOTICE: Config file "/.rclone.conf" not found - using defaults
    Feb 12 16:29:27 debian rclone[30135]: 2019/02/12 16:29:27 Failed to create file system for "Irelia:/": didn't find section in config file
    Feb 12 16:29:27 debian systemd[1]: rclone.service: main process exited, code=exited, status=1/FAILURE
    Feb 12 16:29:27 debian fusermount[30141]: /bin/fusermount: failed to unmount /home/Gdrive: Invalid argument
    Feb 12 16:29:27 debian systemd[1]: rclone.service: control process exited, code=exited status=1
    Feb 12 16:29:27 debian systemd[1]: Unit rclone.service entered failed state.

    1. Rat's
      @Lyric

      错误提示没有/home目录 ,如果存在的话,你换个目录看看,还不行就帮你看看

      1. Lyric
        @Rat's

        我一开始是/usr目录,报错信息和这个貌似是一样的。博主有空的话我给你root吧 tg:https://t.me/vlyyy

        1. Rat's
          @Lyric

          你加我文章最下面留的微信吧,不怎么玩TG

  2. arrowarrow

    Google drive每天有750G流量限制,用这个可以超过吗

    1. Rat's
      @arrowarrow

      不能超过。

  3. da

    failed to get token怎么回事

    1. Rat's
      @da

      感觉是网络问题。

  4. da

    教育版无法启用aop啊

    1. Rat's
      @da

      这个我都是用的个人账号申请的api

  5. Rashc

    您的权限不足,无法为此项目启用或停用服务和 API。 这是怎么回事???

    1. Rat's
      @Rashc

      好像启用api界面的左上角有个项目选择按钮,你换成其它项目看看。

      1. Rashc
        @Rat's

        其他的也不行,我的也是教育版,咋回事啊??

        1. Rat's
          @Rashc

          你用个人版谷歌账号申请看看,我用个人版没出现这个情况

  6. SCGabriel

    (:3」∠ )
    其实传的流量很大的话,自己申请的api还是会出现 403错误

    当然咱出现这个错误的时候,已经连续好几天从GoogleDrive上拷文件了,大概也有7、8TB的流量了
    ┑( ̄Д  ̄)┍

    1. Rat's
      @SCGabriel

      你这没日没夜的,api都扛不住,还是得注意下身体吧。

  7. zturns

    alphracks给我挂alexamaster的vps暂停了,只剩虚拟主机玩,有啥好玩的程序没呢

    1. Rat's
      @zturns

      敢在超售大王上面挂机?

      1. zturns
        @Rat's

        挂了两天,给我suspend了,剩个虚拟主机

        1. Rat's
          @zturns

          不停你才怪,不然邻居遭殃

  8. zturns

    日常占坑

  9. 123123

    我发现KVM下的rclone比OVZ的慢多了,KVM速度几百kb/s,OVZ是满速,同样是100Mbps的宽带,不知道怎么回事,是因为四大金刚机器的问题吗?

    1. Rat's
      @123123

      与超售和性能都有关系,ovz机器很多资源共享,所以有时候只要超售不严重、邻居不折腾,有些方面体验会比kvm好些,但限制会比KVM多些。不过世界加钱可及,钱只要加够,不管是啥,体验都会很好。

      1. 123123
        @Rat's

        哈哈哈哈,那是的,有问题,是钱不够的问题。

  10. lexo

    我以前就经常遇到掉挂载问题,还是加了10G虚拟内存才好点

    1. Rat's
      @lexo

      是的,解决崩溃问题的最简单办法就是加内存

      1. lexo
        @Rat's

        之前我4G内存服务器一直挂后台跑,时间长就挂的进不去ssh了

        1. Rat's
          @lexo

          这点内存长时间跑是容易挂。