记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

使用 Rclone 操作 PikPak 并挂载到本地完美操作

使用 Rclone 操作 PikPak 并挂载到本地完美操作
之前使用DockerAlist可以非常方便实现网盘的挂载和WebDAV功能的实现,全程傻瓜操作,但是对于低配置或者不熟悉Docker部署的人也是有点难度的,现在可以通过 Rclone 一个命令搞定,全命令操作,也是一个很好的选择。Rclone 可以通过一个命令直接安装,非常简单,命令如下:
XML/HTML代码
  1. #Debian/Ubuntu
  2. apt -y install rclone
  3. #Centos
  4. yum -y install rclone
  5. #Alpine
  6. apk add rclone
  7. #Openwrt
  8. opkg install rclone
使用 Rclone 操作 PikPak 资源(命令行下载 PikPak 文件)
Rclone 是一个管理云存储文件的命令行工具,它的支持极为广泛,包括面向开发者的云储存技术、面向用户的各种网盘。数量高达 70 多种。PikPak 是一个网盘兼云下载器。它们二者可以结合使用,让下载更为便捷。
假设我们在路由器上,如何下载 PikPak 的内容呢?我们用 rclone 命令,就像操作本地文件一样来操作 PikPak 上的资源。例如:
XML/HTML代码
  1. rclone copy -P my-pikpak:'My Pack'/my-video.mp4 .
上面的命令会将 PikPak 上的 My Pack/my-video.mp4 文件复制到当前目录。如果你是 PikPak 用户,想必对这个 My Pack 目录并不陌生。
类似的,复制不仅可以是下载,也可以是上传。将两个路径参数颠倒即可。更重要的是 Rclone 可以并行批量下载(例如整个目录),能突破速度限制甚至将宽带跑满。
配置
前先在你的路由器/NAS 或本机上安装 Rclone,这里不做讲解。然后在 Rclone 上配置登录一次即可。
使用 rclone config 命令进入配置交互:
XML/HTML代码
  1. No remotes found, make a new one?
  2. n) New remote
  3. s) Set configuration password
  4. q) Quit config
  5. n/s/q> n
上面的输出来自第一个交互询问,输入 n 表示创建新的远程配置。回车进入下一个步骤。
XML/HTML代码
  1. Enter name for new remote.
  2. name> my-pikpak
上面是配置这个远程的名称,输入 my-pikpak 或任意文本。但我建议最好不要使用中文,且在命名中提及 pikpak 便于区分。
XML/HTML代码
  1. Option Storage.
  2. Type of storage to configure.
  3. Choose a number from below, or type in your own value.
  4. XX / PikPak
  5.    \ (pikpak)
  6. Storage> XX
上面是一个省略的输出。这个步骤列出了所有 Rclone 支持的远程平台,每一个左边有一个数字编号。找到 PikPak 的编号(这里用 XX 表示),然后输入编号回车。因为 Rclone 的远程支持在不断变化,编号可能不会是一尘不变的。
XML/HTML代码
  1. Option user.
  2. Pikpak username.
  3. Enter a value.
  4. user> xx@xx.com
上面要求你输入 PikPak 的用户名。但实际上 PikPak 网站的用户名相当于昵称,并不能用于登录。此处你应该输入注册时使用的邮箱或手机号(手机号加上区号,例如 +1)。
XML/HTML代码
  1. Option user.
  2. Option pass.
  3. Pikpak password.
  4. Choose an alternative below.
  5. y) Yes, type in my own password
  6. g) Generate random password
  7. y/g> y
  8. Enter the password:
  9. password:
  10. Confirm the password:
  11. password:
上面是一个输入密码的交互。先输入 y 表示手动指定密码而不是随机密码。然后你要输入两次密码,输入时不会显示任何内容,输入完了回车即可。
XML/HTML代码
  1. Edit advanced config?
  2. y) Yes
  3. n) No (default)
  4. y/n>
这是最后一个有效对话,询问你是否要编辑高级配置。直接回车(表示否)即可。
XML/HTML代码
  1. Configuration complete.
  2. Options:
  3. - type: pikpak
  4. - user: USERNAME
  5. - pass: *** ENCRYPTED ***
  6. - token: {"access_token":"eyJ...","token_type":"Bearer","refresh_token":"os...","expiry":"2023-01-26T18:54:32.170582647+09:00"}
  7. Keep this "remote" remote?
  8. y) Yes this is OK (default)
  9. e) Edit this remote
  10. d) Delete this remote
  11. y/e/d>
上面是 Rclone 成功登录的输出,直接回车结束命令。
使用
这里有一些 Rclone 的基本使用方法。注意下文的 my-pikpak 是添加好的远程配置名称,如果你不是这个名称请相应的修改。同时这也意味着你可以添加数个 PikPak 且互相独立使用。
下载
如效果章节所述,下载就是复制,上传也是。将远程文件复制到本地就是下载:
XML/HTML代码
  1. rclone copy -P my-pikpak:'My Pack'/my-video.mp4 .
这里的 copy 子命令表示复制,-P 表示显示进度,my-pikpak:'My Pack'/my-video.mp4 表示来源目录,. 是复制到的目标位置。
可以看出这条命令的结构和 Linux 上的 cp 命令是差不多的。从抽象的角度,操作硬盘是不存在上传或下载的,只有复制这一种操作。而 Rclone 可以让你操作网盘像操作本地硬盘那样便捷。
我们写一个简易的脚本,方便我们下载 PikPak 上的文件:
XML/HTML代码
  1. #!/usr/bin/env sh
  2. clone copy -P "my-pikpak:'My Pack'/$1" .
将上面的脚本保存为 pikpak-dl.sh,像这样使用它:
XML/HTML代码
  1. ./pikpak-dl.sh my-video.mp4
这样就我们就不需要每一次都指定 PikPak 路径了。因为 My Pack 目录有一个空格不适合命令行使用,所以我一种用 ' 将其包裹作为一个整体。调用此脚本的参数就是去掉了 My Pack 目录的远程文件路径,执行时会将文件下载到当前目录。
上传
上传就是把两个路径参数颠倒一下,例如:
XML/HTML代码
  1. rclone copy -P ./my-video.mp4 my-pikpak:'My Pack'/
这里的 ./my-video.mp4 就是当前目录的文件,my-pikpak:'My Pack'/ 就是我们要复制到的位置。
为何你总是输入 My Pack,不麻烦吗?
确实麻烦。你也可以复制到根目录使用,无视这个目录。但这个带空格的目录 PikPak 貌似不允许删除, 是系统默认的一个目录。
Rclone 的强大不仅如此,更多操作有待你们自行发掘(例如删除、同步文件、移动、创建等复杂整理)。结合其它工具(如定时调度)还可以轻松实现自动同步云盘内容到本地。
如果你是一个普通网民,应该能体会到不总是具有图形界面的软件才是方便的。这里的 Rclone 就是一个很好的例子。
将 PikPak 资源挂载到文件管理器,无需高级会员体验比官方 WebDAV 更完整的支持
下面是扩展 Rclone 的用法,利用 Rclone 启用 PikPak 的完整 WebDAV 支持。无需会员,完全免费,且比官方支持更加强大。
PikPak 有一个不完整,不成熟的官方 WebDAV 实现。仅支持读取操作,且只开放给高级会员。进入 PikPak 客户端设置 - 实验室功能 - WebDAV 设置,可以启用它。启用后可以看到 WebDAV 连接信息,如果你想知道怎么进一步操作可以参考本文的后续。
官方的 WebDAV 支持有很多的问题,具体如下(主要是 Windows):
资源管理器可能会把文件夹显示为文件
随机性连接失败,包括使用正确信息连接有概率提示目录不存在
如果进行不支持的操作(如复制)资源管理器可能会卡死
可以说几乎不可用,也不建议用。
第三方支持
这里利用的是前言提到的 Rclone 程序,这个工具我此前有过介绍。Rclone 是一个云存储管理的命令行工具,它将 PikPak 的客户端或网页端操作抽象为更通用的文件操作(如复制、移动、删除、重命名、创建目录等)。
同时 Rclone 还可以作为 WebDAV 服务运行,将 WebDAV 操作转换为通用文件操作,最终映射到 PikPak 上的原始资源操作。所以被 Rclone 支持的云存储都可以作为 WebDAV 的后端,这就是启用 PikPak 完整 WebDAV 支持的原理。
流程逻辑如下:
WebDAV 客户端--WebDAV 协议请求--Rclone WebDAV 服务--转换--Rclone 通用操作--映射--请求--PikPak
启动服务
假设你已经完成了 Rclone 的配置,并添加了名为 my-pikpak 的 PikPak 远程。使用如下命令即可运行 WebDAV 服务:
XML/HTML代码
  1. rclone serve webdav \
  2.   --addr 0.0.0.0:8000 \
  3.   --cache-dir /storage/.cache/rclone \
  4.   --vfs-cache-mode full \
  5.   my-pikpak:'My Pack'
这条命令会监听 8000 端口,允许任意 IP 的连接。没有认证。以 My Pack 作为根目录。就是如此简单。
留意 --cache-dir 这个参数的值,它表示 Rclone 读写数据时的缓存位置。如果你在 OpenWrt 运行,由于内置存储有限一般不使用默认位置(/root/.cache/rclone)。应设置为外置存储设备的路径,例如此处的 /storage 目录是我的路由器上挂载的一个硬盘。
如果你不在意性能或空间实在有限,可以把 --cache-dir 和 --vfs-cache-mode 两个参数都删掉。
连接 WebDAV
基本上所有 WebDAV 客户端的连接方法都是差不多的,因为 WebDAV 服务其实就是 HTTP 服务,认证就是基本认证。以下会大致讲解不同系统的自带连接方法,并假设你将 WebDAV 服务运行在 IP 为 192.168.1.1 的路由器上。
Windows
右键「此电脑」,选择「映射网络驱动器」。打开创建窗口后盘符随意选择,文件夹路径输入 http://192.168.2.1:8000,确认即可。
完成添加后,Windows 会创建一个类似 DavWWWRoot (\\192.168.1.1@8000) 名称的网络位置。之后你就可以随意进入和操作了。
Dolphin
Dolphin 是 KDE 桌面环境的文件管理器,如果你不是 Linux 用户则不必在意此章节。
打开 Dolphin 后,进入「网络」位置。点击地址栏右侧的「添加网络文件夹」,按步骤输入服务器地址(如 192.168.2.1)和端口(如 8000)。文件夹为 /(根目录)或自己想作为根的目录位置。保存即可。
一些问题
当你完成 WebDAV 添加后,就可以像对待本地文件那样进行一些基本操作了。一般来讲,集成到系统自带的文件管理器中肯定是最理想的,但事实不一定如愿。
文件大小限制
在 Windows Explorer (Windows 的文件管理器)上 WebDAV 支持有一个严格的限制,出于安全目的传输的文件大小不可超过 50000000 字节(约等于 50MB):
文件大小超出限制弹窗
如果试图复制超过 50MB 的文件,就会出现「文件大小超出允许的限制,无法保存」的消息弹窗,拒绝执行。如果试图播放超过 50MB 的视频也不能成功。
很显然这是不切实际的,所以我们首先要修改此限制。按下 Win 键打开搜索框输入「运行」,打开运行后输入 regedit 打开注册表编辑器后在地址栏输入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 。回车后会直达到我们要修改的键所在的位置。
在右侧找到名为 FileSizeLimitInBytes 的键,双击修改它。在修改窗口中选择十进制,输入 4294967295
修改 FileSizeLimitInBytes 截图
也可以在默认的十六进制下输入 ffffffff。它们都代表同一个值,即 4GB。
你需要重启系统才能让此修改生效。
虽然 4GB 已经很大了,但对于高清的视频资源可能还不够。遗憾的你无法超出 4GB,这是 Windows 文件管理器的硬性限制。
进度异常
如果你在复制文件时发现进度条不太正常,例如:
一直显示 0%,经过一定的等待后直接 100% 完成,缺少中间的进展。
一开始就迅速 100%,然后再等待很久后才完成。
这都是有可能的,只要有明显的网络活动那就是正常的,不会影响复制速度。这跟 WebDAV 服务端和客户端都有关系,Rclone 的模式毕竟没有适配到真正 WebDAV 后端,这种问题是可以理解的。
基本认证
在启动服务章节的例子中,我们并没有添加用户认证。这显然是不安全的,泄漏隐私的。在命令行中添加 --user 和 --pass 参数,启用它:
XML/HTML代码
  1. rclone serve webdav \
  2.   --addr 0.0.0.0:8000 \
  3.   --user admin \
  4.   --pass admin \
  5.   --cache-dir /storage/.cache/rclone \
  6.   --vfs-cache-mode full \
  7.   my-pikpak:'My Pack'
这样就设置了基本认证,用户名为 admin,密码为 admin。请自行按需修改。
添加基本认证以后,连接 WebDAV 时会弹出一个输入框,要求输入用户名和密码。输入密码后勾选「记住我的登录凭证」,后续连接就不需要再输入了。
OpenWrt 服务
假设你在 OpenWrt 上运行 Rclone 的 WebDAV 服务,并希望开机自启动,最标准的做法是创建 procd 服务。除此之外,你也可以考虑以 Docker 容器的方式运行,这里不做介绍。
procd 脚本
创建 /etc/init.d/pikpak-webdav 文件,内容如下:
XML/HTML代码
  1. #!/bin/sh /etc/rc.common
  2. START=95
  3. STOP=10
  4. USE_PROCD=1
  5. start_service() {
  6.     procd_open_instance
  7.     procd_set_param command /usr/bin/rclone serve webdav \
  8.         --addr 0.0.0.0:8000 \
  9.         --user admin \
  10.         --pass admin \
  11.         --cache-dir /storage/.cache/rclone \
  12.         --vfs-cache-mode full
  13.     procd_append_param command my-pikpak:'My Pack'
  14.     procd_set_param respawn
  15.     procd_set_param stdout 1
  16.     procd_set_param stderr 1
  17.     procd_set_param env HOME=/root
  18.     procd_close_instance
  19. }
这个 procd 脚本十分的精简,如果你需要更灵活的配置,请自行设计并加载配置文件。
添加权限:
XML/HTML代码
  1. chmod +x /etc/init.d/pikpak-webdav
启动服务:
XML/HTML代码
  1. service pikpak-webdav start
运行 logread 查看日志,确认服务是否正常启动。如果成功,最新的日志应该是像下面的样子:
Mon Jul 22 05:32:04 2024 daemon.err rclone[1417]: 2024/07/21 21:32:04 NOTICE: PikPak root 'My Pack': WebDav Server started on [http://[::]:8000/]
开机自启动此服务:
XML/HTML代码
  1. service pikpak-webdav enable
好了,现在你的 PikPak WebDAV 已经作为服务管理。
procd 脚本解释
为什么要手动添加 HOME 变量的值为 /root?如果我不添加的话,Rclone 就无法正确的获取 HOME 路径,从而拼接出错误的配置文件路径。启动会失败,日志如下:
Config file "/.config/rclone/rclone.conf" not found - using defaults
具体的背后原因(如代码实现或 procd 因素)我暂时没有时间精力去研究。如果有人知道可以联系并告诉我。
更好的体验
我在上面提及过,系统自带的 WebDAV 支持不总是最理想的。如果你想要更完美的体验,可以考虑流行的第三方 WebDAV 客户端,具体的要你们自行发掘了。
这就是 PikPak 使用完整 WebDAV 的教程了。如果对 Rclone 仍然有不懂的,可以自行搜索 Rclone 的详细用法。
参考1 参考2

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):