<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="使用 Rclone 操作 PikPak 并挂载到本地完美操作">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2024-08-06 10:47<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
使用 Rclone 操作 PikPak 并挂载到本地完美操作


之前使用Docker和Alist可以非常方便实现网盘的挂载和WebDAV功能的实现，全程傻瓜操作，但是对于低配置或者不熟悉Docker部署的人也是有点难度的，现在可以通过 Rclone 一个命令搞定，全命令操作，也是一个很好的选择。Rclone 可以通过一个命令直接安装，非常简单，命令如下：




XML/HTML代码


    #Debian/Ubuntu

    apt -y install rclone

    #Centos

    yum -y install rclone

    #Alpine

    apk add rclone

    #Openwrt

    opkg install rclone







使用 Rclone 操作 PikPak 资源（命令行下载 PikPak 文件）


Rclone 是一个管理云存储文件的命令行工具，它的支持极为广泛，包括面向开发者的云储存技术、面向用户的各种网盘。数量高达 70 多种。PikPak 是一个网盘兼云下载器。它们二者可以结合使用，让下载更为便捷。


假设我们在路由器上，如何下载 PikPak 的内容呢？我们用 rclone 命令，就像操作本地文件一样来操作 PikPak 上的资源。例如：




XML/HTML代码


    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代码


    No remotes found, make a new one?

    n) New remote

    s) Set configuration password

    q) Quit config

    n/s/q&gt; n







上面的输出来自第一个交互询问，输入 n 表示创建新的远程配置。回车进入下一个步骤。




XML/HTML代码


    Enter name for new remote.

    name&gt; my-pikpak







上面是配置这个远程的名称，输入 my-pikpak 或任意文本。但我建议最好不要使用中文，且在命名中提及 pikpak 便于区分。




XML/HTML代码


    Option Storage.

    Type of storage to configure.

    Choose a number from below, or type in your own value.

    XX / PikPak

       \ (pikpak)

    Storage&gt; XX







上面是一个省略的输出。这个步骤列出了所有 Rclone 支持的远程平台，每一个左边有一个数字编号。找到 PikPak 的编号（这里用 XX 表示），然后输入编号回车。因为 Rclone 的远程支持在不断变化，编号可能不会是一尘不变的。




XML/HTML代码


    Option user.

    Pikpak username.

    Enter a value.

    user&gt; xx@xx.com







上面要求你输入 PikPak 的用户名。但实际上 PikPak 网站的用户名相当于昵称，并不能用于登录。此处你应该输入注册时使用的邮箱或手机号（手机号加上区号，例如 +1）。




XML/HTML代码


    Option user.

    Option pass.

    Pikpak password.

    Choose an alternative below.

    y) Yes, type in my own password

    g) Generate random password

    y/g&gt; y

    Enter the password:

    password:

    Confirm the password:

    password:







上面是一个输入密码的交互。先输入 y 表示手动指定密码而不是随机密码。然后你要输入两次密码，输入时不会显示任何内容，输入完了回车即可。




XML/HTML代码


    Edit advanced config?

    y) Yes

    n) No (default)

    y/n&gt;







这是最后一个有效对话，询问你是否要编辑高级配置。直接回车（表示否）即可。




XML/HTML代码


    Configuration complete.

    Options:

    - type: pikpak

    - user: USERNAME

    - pass: *** ENCRYPTED ***

    - token: {&quot;access_token&quot;:&quot;eyJ...&quot;,&quot;token_type&quot;:&quot;Bearer&quot;,&quot;refresh_token&quot;:&quot;os...&quot;,&quot;expiry&quot;:&quot;2023-01-26T18:54:32.170582647+09:00&quot;}

    Keep this &quot;remote&quot; remote?

    y) Yes this is OK (default)

    e) Edit this remote

    d) Delete this remote

    y/e/d&gt;







上面是 Rclone 成功登录的输出，直接回车结束命令。


使用


这里有一些 Rclone 的基本使用方法。注意下文的 my-pikpak 是添加好的远程配置名称，如果你不是这个名称请相应的修改。同时这也意味着你可以添加数个 PikPak 且互相独立使用。


下载


如效果章节所述，下载就是复制，上传也是。将远程文件复制到本地就是下载：




XML/HTML代码


    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代码


    #!/usr/bin/env sh

    clone copy -P &quot;my-pikpak:'My Pack'/$1&quot; .







将上面的脚本保存为 pikpak-dl.sh，像这样使用它：




XML/HTML代码


    ./pikpak-dl.sh my-video.mp4







这样就我们就不需要每一次都指定 PikPak 路径了。因为 My Pack 目录有一个空格不适合命令行使用，所以我一种用 ' 将其包裹作为一个整体。调用此脚本的参数就是去掉了 My Pack 目录的远程文件路径，执行时会将文件下载到当前目录。


上传


上传就是把两个路径参数颠倒一下，例如：




XML/HTML代码


    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代码


    rclone serve webdav \

      --addr 0.0.0.0:8000 \

      --cache-dir /storage/.cache/rclone \

      --vfs-cache-mode full \

      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代码


    rclone serve webdav \

      --addr 0.0.0.0:8000 \

      --user admin \

      --pass admin \

      --cache-dir /storage/.cache/rclone \

      --vfs-cache-mode full \

      my-pikpak:'My Pack'







这样就设置了基本认证，用户名为 admin，密码为 admin。请自行按需修改。


添加基本认证以后，连接 WebDAV 时会弹出一个输入框，要求输入用户名和密码。输入密码后勾选「记住我的登录凭证」，后续连接就不需要再输入了。


OpenWrt 服务


假设你在 OpenWrt 上运行 Rclone 的 WebDAV 服务，并希望开机自启动，最标准的做法是创建 procd 服务。除此之外，你也可以考虑以 Docker 容器的方式运行，这里不做介绍。


procd 脚本


创建 /etc/init.d/pikpak-webdav 文件，内容如下：




XML/HTML代码


    #!/bin/sh /etc/rc.common

    START=95

    STOP=10

    USE_PROCD=1

    start_service() {

        procd_open_instance

        procd_set_param command /usr/bin/rclone serve webdav \

            --addr 0.0.0.0:8000 \

            --user admin \

            --pass admin \

            --cache-dir /storage/.cache/rclone \

            --vfs-cache-mode full

        procd_append_param command my-pikpak:'My Pack'

        procd_set_param respawn

        procd_set_param stdout 1

        procd_set_param stderr 1

        procd_set_param env HOME=/root

        procd_close_instance

    }







这个 procd 脚本十分的精简，如果你需要更灵活的配置，请自行设计并加载配置文件。


添加权限：


XML/HTML代码


    chmod +x /etc/init.d/pikpak-webdav





启动服务：


XML/HTML代码


    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代码


    service pikpak-webdav enable





好了，现在你的 PikPak WebDAV 已经作为服务管理。


procd 脚本解释


为什么要手动添加 HOME 变量的值为 /root？如果我不添加的话，Rclone 就无法正确的获取 HOME 路径，从而拼接出错误的配置文件路径。启动会失败，日志如下：


Config file &quot;/.config/rclone/rclone.conf&quot; not found - using defaults


具体的背后原因（如代码实现或 procd 因素）我暂时没有时间精力去研究。如果有人知道可以联系并告诉我。


更好的体验


我在上面提及过，系统自带的 WebDAV 支持不总是最理想的。如果你想要更完美的体验，可以考虑流行的第三方 WebDAV 客户端，具体的要你们自行发掘了。


这就是 PikPak 使用完整 WebDAV 的教程了。如果对 Rclone 仍然有不懂的，可以自行搜索 Rclone 的详细用法。


参考1 参考2
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
