Rat's

使用Plexdrive/Rclone+Google Drive搭建无限容量的媒体库,适用于Plex/Emby/Jellyfin等
说明:一般我们玩Plex、Emby、Jellyfin这些媒体服务器的时候,都会考虑到硬盘大小的问题。如果考虑到成本...
扫描右侧二维码阅读全文
24
2019/01

使用Plexdrive/Rclone+Google Drive搭建无限容量的媒体库,适用于Plex/Emby/Jellyfin等

说明:一般我们玩PlexEmbyJellyfin这些媒体服务器的时候,都会考虑到硬盘大小的问题。如果考虑到成本的话,那就只能挂载无限网盘了,这里就建议用Google Drive,挂载方法的话可以用PlexdriveRclone

提示:本教程需要国外的服务器,且挂载后看电影、听音乐的时候不需要梯子

Plexdrive是一个可以安装Gdrive应用的工具,看名字像是为Plex量身打造,其实其它应用也可以用,该工具可以直接从Gdrive读取媒体文件,专门争对媒体服务器优化,貌似是利用内存缓存原理,可以加快媒体访问并减少API的读取次数。所以可能需要内存大点,不够的可以添加个几G的虚拟内存,Swap一键脚本→传送门

Rclone是一个强大的网盘挂载工具,很久前博主就经常介绍,不过考虑到用途,之前的挂载参数肯定是需要调整下的,所以会在这里单独说下,该工具目前也有适合媒体服务器的缓存读取功能,但缓存很容易占用本地硬盘空间,所以这里博主就不用缓存功能了,主要使用的是分段读取,读取会快点,对于API来说,读取次数也会变的非常少。

#两个工具的读取区别
Plexdrive:只能读取和删除
Rclone:可以写入、读取和删除,但不能当硬盘直接写入,只能将文件移动进去

2个工具都需要安装fuse,可以提前装下,使用命令:

#Debian/Ubuntu系统
apt-get install fuse -y
#CentOS系统
yum install fuse -y

使用Plexdrive

Github地址:https://github.com/dweidenfeld/plexdrive

1、获取谷歌API凭据
先启用Google Drive API,启用地址:点击进入
请输入图片描述

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

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

2、运行Plexdrive
Plexdrive下载地址→传送门,根据自己的架构选择对应的版本。

#下载最新的Plexdrive
wget https://github.com/dweidenfeld/plexdrive/releases/download/5.0.0/plexdrive-linux-amd64
#移动并命名
mv plexdrive-linux-amd64 /usr/local/bin/plexdrive
chmod +x /usr/local/bin/plexdrive
#新建本地挂载目录
mkdir -p /home/gdrive
#开始挂载
/usr/local/bin/plexdrive mount \
 -c /home/.plexdrive \
 -o allow_other \
 -v 4 --refresh-interval=1m \
 --chunk-check-threads=4 \
 --chunk-load-threads=4 \
 --chunk-load-ahead=4 \
 --max-chunks=20 \
 /home/gdrive

挂载参数可以参考→传送门,可以根据你的需求自行调整以上参数。

挂载后会要你输入客户端ID和密匙,然后打开获取到的链接绑定账号后,将自己获取到的code复制到SSH客户端确定即可。

然后接下来Plexdrive将开始生成缓存,所以期间我们需要等几分钟。缓存完了后,你会看到Gdrive的文件已经同步到了本地挂载文件夹。然后使用PlexEmbyJellyfin等媒体服务器的时候,就可以直接把媒体文件夹指向本地挂载文件夹了。

3、开机自启
这里使用Systemctl守护进程,只适用于CentOS 7Debian 8+Ubuntu 16+

#以下是一整条命令,一起复制到SSH客户端运行
cat > /etc/systemd/system/plexdrive.service <<EOF
[Unit]
Description=Plexdrive
AssertPathIsDirectory=/home/gdrive
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/plexdrive mount \
 -c /home/.plexdrive \
 -o allow_other \
 -v 4 --refresh-interval=1m \
 --chunk-check-threads=4 \
 --chunk-load-threads=4 \
 --chunk-load-ahead=4 \
 --max-chunks=20 \
 /home/gdrive
ExecStop=/bin/fusermount -u /home/gdrive
Restart=on-abort

[Install]
WantedBy=default.target
EOF

开始启动:

systemctl start plexdrive

设置开机自启:

systemctl enable plexdrive

其他命令:

重启:systemctl restart plexdrive
停止:systemctl stop plexdrive
状态:systemctl status plexdrive

使用Rclone

1、配置Rclone
使用和挂载Google Drive的方法可以参考博主以前发的教程→传送门,但只参考教程安装和配置即可,挂载就看本文。

2、挂载Gdrive
挂载需要3个主要参数,这里很多人容易搞混,就详细的说下,比如开头的参数如下:

/usr/bin/rclone mount DriveName:Folder LocalFolder

参数解读:

DriveName为Rclone的配置名称,比如你配置rclone的时候,Name填的Rats
Folder为网盘里的文件夹路径,如果你要挂载整个网盘,直接填/挂载整个根目录
LocalFolder为本地服务器上的挂载文件夹,如果你需要将网盘的文件夹挂载到服务器上的/Drive文件夹,那就填/Drive

博主目前针对媒体服务器测试了个比较不错的挂载参数,命令:

#记得修改DriveName:Folder和LocalFolder的值
/usr/bin/rclone mount DriveName:Folder LocalFolder \
 --umask 0000 \
 --default-permissions \
 --allow-non-empty \
 --allow-other \
 --buffer-size 32M \
 --dir-cache-time 12h \
 --vfs-read-chunk-size 64M \
 --vfs-read-chunk-size-limit 1G

更多参数可以查看→地址一地址二,如果你喜欢折腾的话,可以测试下,看还有不有更适合的参数,然后留个言。

3、开机自启
这里和Plexdrive一样,同样使用Systemctl守护进程,也只适用于CentOS 7Debian 8+Ubuntu 16+

#以下是一整条命令,先修改DriveName:Folder和LocalFolder的值,再一起复制到SSH客户端运行
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount DriveName:Folder LocalFolder \
 --umask 0000 \
 --default-permissions \
 --allow-non-empty \
 --allow-other \
 --buffer-size 32M \
 --dir-cache-time 12h \
 --vfs-read-chunk-size 64M \
 --vfs-read-chunk-size-limit 1G
ExecStop=/bin/fusermount -u LocalFolder
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF

开始启动:

systemctl start rclone

设置开机自启:

systemctl enable rclone

其他命令:

重启:systemctl restart rclone
停止:systemctl stop rclone
状态:systemctl status rclone

总结

现在Plexdrive项目好像很少更新了,不过还能用;至于Rclone的话,更新频繁,功能也强,所以博主还是偏向于Rclone的,不过博主体验了下下,貌似Plexdrive加载什么的更快些,当然也不能肯定Plexdrive要快,毕竟也可能与其它因素有关,对于这2个工具的选择,可以都体验下,觉得哪个适合自己就用那个。

编译Plexdrive

说明:由于作者Github源码更新了,二进制还没更新,为了可以使用最新版的功能,我们可以编译下,这里就说下方法。

1、安装Go

#32位系统下载
wget -O go.tar.gz https://dl.google.com/go/go1.13.3.linux-386.tar.gz
#64位系统下载
wget -O go.tar.gz https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz

#解压压缩包
tar -zxvf go.tar.gz -C /usr/local
#设置环境变量,将以下一起复制进ssh客户端运行
mkdir $HOME/go
echo 'export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> /etc/profile
source /etc/profile
#查看go版本,有输出即为安装成功
go version

2、安装Git

#Debian/Ubuntu系统
apt-get -y install git

#CentOS/RHEL系统
yum -y install git

3、编译Plexdrive

go get github.com/dweidenfeld/plexdrive
cd $GOPATH/src/github.com/dweidenfeld/plexdrive
#构建
go build

到这里最新版的plexdrive编译并安装完成。

相关教程

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2020 年 02 月 17 日 12 : 49 AM

发表评论

130 条评论

  1. LYM

    谷歌云也就只有15g哎。。。。QAQ

    1. Rat's
      @LYM

      找下我发的教程,有申请无限谷歌网盘的教程

      1. LsyIuAn
        @Rat's

        我薅到的无限Google都没开放Api权限=-=咋整

        1. Rat's
          @LsyIuAn

          用个人版申请,教育版好像不行

      2. LYM
        @Rat's

        谢谢大佬QAQ

  2. neo

    麻烦问一下,--max-chunks=20 \
    /home/gdrive 开始 Plexdrive生成缓存 一直显示
    [USR/LOCAL/BIN/PLEXDRIVE] [2019-04-01 06:53] TRACE : Got start page token 9804
    [USR/LOCAL/BIN/PLEXDRIVE] [2019-04-01 06:53] DEBUG : Last change id found, continuing getting changes (9804)
    [USR/LOCAL/BIN/PLEXDRIVE] [2019-04-01 06:53] DEBUG : Storing page token 9804 in cache
    一夜了还是这个代码,下一步怎么操作?我关了连接窗口 ,重新登录 输入 systemctl start plexdrive 提示不能启动,我是Debian GNU/Linux 9 (stretch) amd64 built on 20190326 的系统,麻烦你指导一下!

    1. 小白
      @neo

      我也一樣,試了很多方法。GD 只有2百個文件
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:11] INFO : First cache build process finished!
      下面開始不停重覆
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:12] DEBUG : Checking for changes
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:12] DEBUG : Getting start page token from cache
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:12] TRACE : Got start page token 4899
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:12] DEBUG : Last change id found, continuing getting changes (4899)
      [USR/LOCAL/BIN/PLEXDRIVE] [2020-06-26 08:12] DEBUG : Storing page token 4899 in cache
      ...不停重覆

      Welcome to ARMBIAN 5.77 user-built Debian GNU/Linux 9 (stretch) 5.0.2-aml-s905
      System load: 0.00 0.00 0.00 Up time: 24 min Local users: 2
      Memory usage: 7 % of 1838MB IP: 169.254.3.56 9.9.9.18
      CPU temp: 58°C
      Usage of /: 44% of 3.4G storage/: 48% of 128M

    2. Rat's
      @neo

      你内存是多大的?看是不是内存太小,缓存的时候蹦了

  3. 阿萨德

    请问我把onedrive挂载到了本地,为什么plex添加库识别不出来里面的视频?vps显示的是有的,但是plex什么都不出

    1. Rat's
      @阿萨德

      按照一些人的回复来看,貌似是挂载目录不对。

      1. 阿萨德
        @Rat's

        不是目录.......有一个问题是文件后缀,文件是人人影视自动上传那个项目上传的视频,不知道为什么后缀有日期连在MP4后面导致识别不了类型......还有一个问题,能请问一下大佬rclone挂载是只能挂载onedrive某一个文件夹而不是根目录吗?那能不能同时挂载好几个文件夹......

        1. Rat's
          @阿萨德

          后缀那个等我遇到才知道咋解决,挂载的话可以直接挂载根目录,用/代替文件夹。

  4. 西瓜

    大佬这个可以挂载在本地nas上吗

    1. Rat's
      @西瓜

      前提你的nas可以访问谷歌。

  5. yang

    大佬,如果想卸载plexdrive,怎么操作?

    1. Rat's
      @yang

      删掉你移动的文件,比如文章里的/usr/local/bin/plexdrive

  6. GYGYK

    在挂载时网页验证code时网页错误如何解决?

    1. lsd
      @GYGYK

      我也是挂载googledrive最后一步验证code超时,腾讯云是不是不让挂载啊

      1. Rat's
        @lsd

        国内的机器么?

        1. lsd
          @Rat's

          是国内的,腾讯云学生机

          1. Rat's
            @lsd

            国内的肯定连不上谷歌啊,开头有提示

    2. Rat's
      @GYGYK

      具体什么错误,然后你谷歌看看

  7. rhotov

    开机自启那里报错:
    Feb 07 21:42:08 rhotov rclone[6275]: 2019/02/07 21:42:08 ERROR : Defaulting to storing config in current directory.
    Feb 07 21:42:08 rhotov rclone[6275]: 2019/02/07 21:42:08 ERROR : Use --config flag to workaround.
    Feb 07 21:42:08 rhotov rclone[6275]: 2019/02/07 21:42:08 ERROR : Error was: user: Current not implemented on linux/amd64
    Feb 07 21:42:08 rhotov rclone[6275]: 2019/02/07 21:42:08 NOTICE: Config file "/.rclone.conf" not found - using defaults
    Feb 07 21:42:08 rhotov rclone[6275]: 2019/02/07 21:42:08 Failed to create file system for "gdrive:/": didn't find section in config file
    Feb 07 21:42:08 rhotov systemd[1]: rclone.service: main process exited, code=exited, status=1/FAILURE
    Feb 07 21:42:08 rhotov fusermount[6280]: /bin/fusermount: failed to unmount /gdrive: Invalid argument
    Feb 07 21:42:08 rhotov systemd[1]: rclone.service: control process exited, code=exited status=1
    Feb 07 21:42:08 rhotov systemd[1]: Unit rclone.service entered failed state.
    Feb 07 21:42:18 rhotov systemd[1]: [/etc/systemd/system/rclone.service:3] Unknown lvalue 'AssertPathIsDirectory' in section 'Unit'

    1. Rat's
      @rhotov

      这个你可以加下我文章下面联系方式,我看下你的配置。

      1. Miccan
        @Rat's

        Failed to create file system for "mediaefs:": didn't find section in config file
        博主你好,我也有点问题想请教,可否加你?

  8. zhhacker

    创建OAuth client ID之前 谷歌会弹出 OAuth 同意屏幕的 对话框 那个怎么填。我默认什么都没填 按博主的步骤 没发挂载成功 一直卡在那

    1. Rat's
      @zhhacker

      OAuth同意屏幕这里一般填个名称就行了

  9. Lyric

    博主按到教程挂载成功了 ,df -h也显示onedrive的5t挂在到/root/Onedrive,cd到这里面ls也能显示网盘的内容,但是emby选不了这个路径是怎么回事呐?挂载完以后emby服务也重启过了。

    1. Rat's
      @Lyric

      换个目录,别放到根目录/root,你把挂载目录设置成/home试试

      1. Lyric
        @Rat's

        我换到/usr 就可以了,谢博主

  10. 缙哥哥

    不知道可否跟宝塔环境共存,如果可以的话就太棒了,抽空试一下!

    1. Rat's
      @缙哥哥

      可以,一般不涉及到环境冲突的都可以用宝塔