VPS 使用 rclone 挂载 onedrive 网盘

2025年1月16日 22点热度 0人点赞 0条评论
标题内容

警告⚠️:请勿使用网盘保种!会被站点封号!

 

步骤 1:安装 rclone

根据你的 Linux 发行版,使用相应的命令安装 rclone

  • Debian/Ubuntu:

  • sudo apt update
    sudo apt install rclone

    CentOS/RHEL:

  • sudo yum update
    sudo yum install epel-release
    sudo yum install rclone

     

 

步骤 2:配置 rclone 连接 OneDrive

运行 rclone config 命令进行配置。

rclone config

 

按照提示进行操作:

  1. n) New remote 输入 n 创建新的远程连接。

  2. name> onedrive 输入你想要的远程连接名称,例如 onedrive

  3. **Storage> ** 选择 onedrive (通常是21).

  4. client_id> 留空,直接回车。

  5. client_secret> 留空,直接回车。

  6. Edit advanced config? (y/N) 输入 n

  7. Use auto config? 选择 y (推荐)。这会打开你的浏览器并提示你登录 OneDrive 并授权 rclone。

  8. If auto config fails, run the following command: 如果自动配置失败,按照提示手动授权。

  9. Configure this as a Shared Drive (Team Drive)? 如果是个人 OneDrive,选择 n。如果是组织或学校的共享 OneDrive,根据情况选择 y 或 n

  10. 配置完成后,rclone 会保存你的 OneDrive 连接信息。

步骤 3:创建挂载点

在你的 VPS 上创建一个用于挂载 OneDrive 的目录。

sudo mkdir /home/down

步骤 4:挂载 OneDrive

使用 rclone mount 命令挂载 OneDrive。

nohup rclone mount onedrive: /home/down --allow-other --umask 002 --vfs-cache-mode writes &

 

  • onedrive: 是你在 rclone config 中设置的远程连接名称。

  • /home/down 是你创建的挂载点。

  • --vfs-cache-mode full 启用完整缓存,可以提高性能,但会占用本地磁盘空间。可以根据需求选择其他模式,如 writes 或 minimal

  • nohup 使挂载在后台运行。

步骤 5:验证挂载

查看 /mnt/onedrive 目录,你应该能够看到你的 OneDrive 中的文件和文件夹。

ls /home/down

 

取消挂载 OneDrive

fusermount -uz /home/down

 

 

 

 

使用 rclone copy 命令将 /home/down 目录下的所有文件发送(复制)到你的 OneDrive /down。

rclone copy /home/down/ onedrive:down/ --retries 3 --chunk-size 50M

 

  • --chunk-size 50M 表示上传/下载文件时,将文件数据分成 50MB 大小的块。(默认5M,会增加请求数)

命令解释:

  • --retries 3: 表示如果复制过程中遇到错误,rclone 会自动重试最多 3 次。你也可以根据需要调整重试次数。

  • rclone copy: rclone 的复制命令,用于将文件从源位置复制到目标位置。

  • /home/down/: 这是源路径,即你要复制的本地目录。

  • onedrive:: 这是目标路径,指向你配置的名为 "onedrive" 的远程。 由于没有指定 OneDrive 中的具体路径,文件将被复制到 OneDrive 的根目录。

更完善的命令 (推荐):

为了获得更好的性能和控制,可以添加一些选项:

rclone copy /home/down/ onedrive: --transfers 4 --checkers 8 --bwlimit 50M -v

 

这些选项的含义:

  • --transfers 4: 指定并发上传的文件数量。 可以提高上传速度,但过高可能会导致网络拥塞或触发 OneDrive 的限制。 可以根据你的网络情况调整。

  • --checkers 8: 指定用于校验文件完整性的并发连接数。

  • --bwlimit 50M: 限制上传带宽为 50MB/s (兆字节每秒)。 这可以防止 rclone 占用所有可用带宽,影响其他网络应用,也可以帮助避免触发 OneDrive 的上传速率限制。 你可以根据你的网络情况调整这个值。

  • -v: 启用详细输出,显示正在复制的文件和进度。 对于监控传输过程很有用。

 

将文件复制到 OneDrive 的特定子目录:

如果你想将文件复制到 OneDrive 中的特定子目录,可以在目标路径中指定子目录名:

rclone copy /home/down/ onedrive:down/ --transfers 4 --checkers 8 --bwlimit 50M -v

这个命令会将 /home/user/qbittorrent/Downloads/ 中的文件复制到 OneDrive 根目录下的名为 qbittorrent_uploads 的文件夹中。 如果该文件夹不存在,rclone 会自动创建。

 

使用 rclone move (移动文件):

如果你希望在复制完成后删除本地的文件,可以使用 rclone move 命令:

rclone move /home/down/ onedrive: --transfers 4 --checkers 8 --bwlimit 50M -v

注意: rclone sync 是一个双向同步命令。 如果 OneDrive 中有本地没有的文件,也会被删除。 请谨慎使用。

总结步骤:

  1. (推荐)使用 --dry-run 选项运行 rclone copy 命令,检查即将复制的文件。

  2. 移除 --dry-run 选项,运行实际的 rclone copy 命令。

  3. 或者,如果你想移动文件,可以使用 rclone move 命令 (请谨慎操作)。

  4. 或者,如果你想同步文件,可以使用 rclone sync 命令 (请谨慎操作)。

请根据你的需求选择合适的命令和选项。 记住先使用 --dry-run 进行测试是一个好习惯。

 

 

 

常见问题

如果在上传过程中遇到某个文件失败报错,如:accessDenied: serviceReadOnly: Database Is Read Only 报错,表明 OneDrive 服务端暂时处于只读状态

要稍后重试这个失败的文件,你可以使用 rclone 的一些特性来进行重试。以下是几种方法:

首先这是一个报错例子

root@31tu:~# rclone copy /home/user/qbittorrent/Downloads/ onedrive:
2025/01/16 21:08:50 ERROR : Re.ZERO.Starting.Life.in.Another.World.S01.BluRay.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR/Re.ZERO.Starting.Life.in.Another.World.S01E03.Starting.Life.from.Zero.in.Another.World.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR.mkv: Failed to copy: accessDenied: serviceReadOnly: Database Is Read Only

 

方法一:使用 --files-from 选项只重试失败的文件

如果你想更精确地只重试那个失败的文件,你可以从 rclone 的日志中找到失败的文件名,然后使用 --files-from 选项。

  1. 查找失败的文件名: 你应该能在 rclone 的输出中找到失败的文件名。在这个例子中,失败的文件是:

Re.ZERO.Starting.Life.in.Another.World.S01.BluRay.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR/Re.ZERO.Starting.Life.from.Zero.in.Another.World.S01E03.Starting.Life.from.Zero.in.Another.World.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR.mkv

      2.创建一个包含失败文件路径的文件: 创建一个文本文件,例如 failed_files.txt,并将失败的文件相对于源目录的路径写入其中。

echo "Re.ZERO.Starting.Life.in.Another.World.S01.BluRay.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR/Re.ZERO.Starting.Life.from.Zero.in.Another.World.S01E03.Starting.Life.from.Zero.in.Another.World.1080p.FLAC.2.0.AVC.REMUX-FraMeSToR.mkv" > failed_files.txt

3.使用 --files-from 选项重新运行:

rclone copy /home/user/qbittorrent/Downloads/ onedrive: --files-from failed_files.txt --retries 3
  • --files-from failed_files.txt: 告诉 rclone 只处理 failed_files.txt 文件中列出的文件。

  • --retries 3: 仍然可以加上重试选项,以防重试时再次遇到临时问题。

方法二:使用 --low-level-retries 选项

rclone 还有一个 --low-level-retries 选项,它会在更低的层次上重试单个操作(例如,单个文件的上传),而不是整个 copy 命令。

rclone copy /home/user/qbittorrent/Downloads/ onedrive: --low-level-retries 10
  • --low-level-retries 10: 表示如果单个文件上传失败,rclone 会尝试重新上传该文件最多 10 次。

优点: 可以更细粒度地处理上传错误,可能在网络波动等情况下更有效。
缺点: 如果问题是整个 OneDrive 服务不可用,这个选项可能不会立即解决问题,因为 rclone 会不断尝试。

推荐的做法:

  • 稍后重试: 鉴于错误信息是 OneDrive 服务只读,建议稍等一段时间(例如 15-30 分钟或更久),让 OneDrive 服务恢复正常后再进行重试。

  • 使用 --retries 重新运行整个命令: 对于这种情况,这是最简单且通常足够有效的做法。

  • 如果经常遇到此类问题,考虑结合 --retries 和 --low-level-retries

rclone copy /home/user/qbittorrent/Downloads/ onedrive: --retries 3 --low-level-retries 5
  • 这样,如果单个文件上传失败,会先尝试低级别的重试,如果整个复制过程仍然失败,则会进行更高层次的重试。

其他建议:

  • 查看 rclone 日志: 如果你配置了 rclone 的日志功能,你可以查看日志文件以获取更详细的错误信息。

  • 检查网络连接: 虽然错误信息指向 OneDrive 服务端,但确保你的 VPS 网络连接稳定也很重要。

  • 查看 OneDrive 服务状态: 你可以搜索一下是否有其他用户报告了类似的 OneDrive 服务问题。

选择哪种方法取决于你的具体需求和对效率的考虑。 通常来说,稍等片刻后使用 --retries 重新运行命令是一个不错的选择。

admin

这个人很懒,什么都没留下