Rclone 是一款强大的命令行工具,支持超过 70 种云存储和网络协议,被誉为”云存储的瑞士军刀”。本教程将详细介绍如何在 Ubuntu 24.04 桌面版上使用 Rclone 通过 WebDAV 协议挂载局域网内的 NAS 设备,实现像本地磁盘一样访问网络存储,并配置 systemd 服务实现开机自动挂载。

教程概述

本教程将带你完成在 Ubuntu 24.04 上使用 Rclone 挂载 NAS 的完整过程。内容包括:

  • 环境准备:安装 Rclone 和必要依赖
  • 配置远程存储:通过交互式向导配置 WebDAV 连接
  • 手动挂载测试:验证配置正确性
  • 性能优化:针对大文件和大量小文件传输的参数调优
  • 服务配置:创建 systemd 服务实现开机自动挂载
  • 问题排查:常见问题的解决方案

实际环境

本教程基于以下实际环境编写:

项目 配置
操作系统 Ubuntu 24.04 LTS 桌面版
内核版本 6.14.0-37-generic
Rclone 版本 v1.72.1
NAS 地址 192.168.5.5:5005
挂载协议 WebDAV (HTTP)
挂载点 /mnt/nas

步骤 1:安装 Rclone

Rclone 提供多种安装方式,推荐使用官方安装脚本以获取最新版本。

方式一:官方脚本安装(推荐)

1
curl https://rclone.org/install.sh | sudo bash

命令解释:

  • curl https://rclone.org/install.sh:从官方下载安装脚本
  • | sudo bash:以管理员权限执行脚本,自动完成下载、解压和安装

方式二:APT 包管理器安装

1
2
sudo apt update
sudo apt install rclone

命令解释:

  • sudo apt update:更新软件包列表
  • sudo apt install rclone:从 Ubuntu 官方仓库安装 rclone

版本说明:APT 仓库中的版本可能不是最新的,如需最新功能建议使用官方脚本安装。

验证安装

1
rclone --version

预期输出:

1
2
3
4
5
rclone v1.72.1
- os/version: ubuntu 24.04 (64 bit)
- os/kernel: 6.11.0-13-generic (x86_64)
- os/type: linux
- os/arch: amd64

步骤 2:配置 FUSE 权限

Rclone 使用 FUSE(用户空间文件系统)实现挂载功能。为了让其他用户也能访问挂载点,需要启用 user_allow_other 选项。

1
2
sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
sudo chmod 644 /etc/fuse.conf

命令解释:

  • sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
    • sed -i:直接修改文件内容
    • s/#user_allow_other/user_allow_other/g:取消 user_allow_other 前的注释符号
  • sudo chmod 644 /etc/fuse.conf:设置配置文件权限为所有用户可读

验证配置:

1
cat /etc/fuse.conf | grep user_allow_other

预期输出:

1
user_allow_other

权限说明:此配置允许非 root 用户使用 --allow-other 参数,使挂载点对所有用户可见。


步骤 3:创建挂载点目录

创建用于挂载 NAS 的目录:

1
2
sudo mkdir -p /mnt/nas
sudo chown $USER:$USER /mnt/nas

命令解释:

  • sudo mkdir -p /mnt/nas:创建挂载点目录
    • -p:递归创建,如果父目录不存在则一并创建
  • sudo chown $USER:$USER /mnt/nas:将目录所有权设置为当前用户

步骤 4:配置 WebDAV 远程存储

Rclone 提供两种配置方式:交互式向导和命令行直接配置。

方式一:交互式配置向导

适合初次配置,有详细的步骤提示。

启动配置向导

1
rclone config

配置步骤

  1. 选择新建远程存储:输入 n 创建新配置

    1
    2
    3
    4
    5
    6
    7
    8
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> n
  2. 输入远程存储名称:输入 nas(或其他便于记忆的名称)

    1
    2
    Enter name for new remote.
    name> nas
  3. 选择存储类型:输入 webdav 或对应的数字编号

    1
    2
    Type of storage to configure.
    Storage> webdav
  4. 输入 WebDAV 服务器地址

    1
    2
    URL of http host to connect to.
    url> http://192.168.5.5:5005

    地址格式http://IP地址:端口,根据你的 NAS 实际配置填写。

  5. 选择 WebDAV 服务商类型:通常选择 other

    1
    2
    Name of the WebDAV site/service/software you are using.
    vendor> other
  6. 输入用户名

    1
    2
    User name.
    user> your_username
  7. 输入密码:选择 y 输入密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Password.
    y) Yes, type in my own password
    g) Generate random password
    n) No, leave this optional password blank
    y/g/n> y
    Enter the password:
    password: ********
    Confirm the password:
    password: ********
  8. Bearer Token:直接回车跳过

    1
    2
    Bearer token instead of user/pass.
    bearer_token>
  9. 高级配置:选择 n 跳过

    1
    2
    Edit advanced config?
    y/n> n
  10. 确认配置:选择 y 保存

    1
    2
    3
    4
    5
    Keep this "nas" remote?
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
  11. 退出配置:输入 q

    1
    e/n/d/r/c/s/q> q

查看配置文件

配置完成后,可查看生成的配置文件:

1
cat ~/.config/rclone/rclone.conf

预期输出:

1
2
3
4
5
6
[nas]
type = webdav
url = http://192.168.5.5:5005
vendor = other
user = your_username
pass = xxxxxxxxxxxxxxxxxxxxxxxxxx

安全说明:密码已由 Rclone 自动加密存储,配置文件中显示的是加密后的字符串。

方式二:命令行直接配置(推荐)

适合快速配置或脚本自动化,无需交互操作。

步骤 1:加密密码

Rclone 要求配置文件中的密码必须加密存储,使用 rclone obscure 命令加密:

1
rclone obscure "你的密码"

示例:

1
rclone obscure "mypassword123"

输出:

1
k6RGTJnU2KyxOeZC4V6XMuWsjYVXLVG-iqI8MA

注意:记录下输出的加密字符串,下一步需要使用。

步骤 2:创建配置文件

确保配置目录存在:

1
mkdir -p ~/.config/rclone

直接写入配置文件:

1
2
3
4
5
6
7
8
cat > ~/.config/rclone/rclone.conf << 'EOF'
[nas]
type = webdav
url = http://192.168.5.5:5005
vendor = other
user = your_username
pass = 上一步获取的加密密码
EOF

完整示例:

1
2
3
4
5
6
7
8
cat > ~/.config/rclone/rclone.conf << 'EOF'
[nas]
type = webdav
url = http://192.168.5.5:5005
vendor = other
user = 1317608****
pass = k6RGTJnU2KyxOeZC4V6XMuWsjYVXLVG-iqI8MA
EOF

验证配置

1
cat ~/.config/rclone/rclone.conf

步骤 5:测试连接和目录列表

验证配置是否正确:

1
rclone lsd nas:/

命令解释:

  • rclone lsd:列出远程存储的目录
  • nas:/:远程存储名称和根路径

预期输出:

1
2
3
4
5
-1 2024-07-04 00:00:00        -1 共享文件
-1 2024-12-04 14:15:00 -1 nvme13-1317608****
-1 2024-12-04 09:34:00 -1 public
-1 2024-12-16 16:53:00 -1 sata11-1317608****
-1 2023-12-28 00:00:00 -1 sharetome

步骤 6:手动挂载测试

在配置 systemd 服务之前,先手动测试挂载功能:

1
rclone mount nas:/ /mnt/nas --vfs-cache-mode full --allow-other &

命令解释:

  • rclone mount:挂载远程存储
  • nas:/:挂载 NAS 根目录
  • /mnt/nas:本地挂载点
  • --vfs-cache-mode full:启用完整缓存模式,支持读写
  • --allow-other:允许其他用户访问挂载点
  • &:后台运行

验证挂载:

1
2
df -h /mnt/nas
ls -la /mnt/nas/

卸载挂载点:

1
fusermount3 -u /mnt/nas

步骤 7:创建 Systemd 服务(开机自启动)

创建 systemd 服务文件,实现开机自动挂载和故障自动恢复。

创建服务文件

1
sudo nano /etc/systemd/system/rclone-nas.service

服务配置内容

将以下内容写入文件(根据实际情况修改用户名和路径):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[Unit]
Description=Rclone Mount for NAS WebDAV (Ultra Performance)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=cpu
Group=cpu

# 确保缓存目录存在
ExecStartPre=/bin/mkdir -p /home/cpu/.rclone_cache

# 启动命令
ExecStart=/usr/bin/rclone mount nas:/ /mnt/nas \
--config /home/cpu/.config/rclone/rclone.conf \
--allow-other \
--umask 002 \
--log-level INFO \
--log-file /home/cpu/rclone-nas.log \
--cache-dir /home/cpu/.rclone_cache \
--vfs-cache-mode full \
--vfs-cache-max-size 200G \
--vfs-cache-max-age 24h \
--buffer-size 256M \
--vfs-read-chunk-size 128M \
--vfs-read-chunk-size-limit off \
--transfers 8 \
--checkers 16 \
--dir-cache-time 24h

# 停止时的操作
ExecStop=/bin/fusermount3 -u /mnt/nas
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

重要:请将 User=cpuGroup=cpu/home/cpu/ 替换为你的实际用户名和家目录路径。

参数详解与优化策略

以下是 Rclone mount 的完整参数说明,分为多个类别,帮助你根据实际需求自定义优化策略。

一、基础挂载参数

参数 默认值 说明
--config ~/.config/rclone/rclone.conf 配置文件路径,systemd 服务中建议显式指定
--allow-other false 允许其他用户访问挂载点,需要 /etc/fuse.conf 中启用 user_allow_other
--default-permissions false 使挂载文件遵循文件系统权限,配合 --allow-other 使用可限制访问
--umask 022 文件权限掩码,002 表示组用户可写
--uid 当前用户 挂载文件的所有者 UID
--gid 当前用户 挂载文件的所有者 GID
--attr-timeout 1s 文件属性缓存时间,增大可提升性能但可能导致属性不一致

二、VFS 缓存模式(核心参数)

--vfs-cache-mode 是最重要的参数之一,决定了文件的缓存策略:

模式 说明 适用场景
off 不缓存,直接读写远程 只读访问、流媒体播放
minimal 仅缓存同时读写的文件 轻量使用、节省磁盘空间
writes 只读文件直接读取,写入文件先缓存到本地 推荐:一般使用场景
full 所有读写都通过本地缓存 推荐:需要完整文件系统兼容性

重要:没有 --vfs-cache-mode 时,rclone 只能顺序写入,无法随机读写,大多数应用程序无法正常工作。

三、VFS 缓存控制参数

参数 默认值 说明
--cache-dir 系统缓存目录 本地缓存文件存储位置
--vfs-cache-max-size off 缓存最大空间,超出后自动清理最旧文件
--vfs-cache-max-age 1h 缓存文件最长保留时间
--vfs-cache-min-free-space off 磁盘最小剩余空间,低于此值时清理缓存
--vfs-cache-poll-interval 1m 检查过期缓存的间隔时间
--vfs-write-back 5s 文件关闭后延迟多久上传到远程

缓存大小建议

1
2
3
4
5
6
7
8
# 大容量缓存(适合频繁访问大文件)
--vfs-cache-max-size 200G --vfs-cache-max-age 24h

# 小容量缓存(适合磁盘空间有限)
--vfs-cache-max-size 10G --vfs-cache-max-age 1h

# 自动管理(保持磁盘至少 50G 空闲)
--vfs-cache-min-free-space 50G

四、读取性能优化参数

参数 默认值 说明
--buffer-size 16M 每个打开文件的内存缓冲区大小
--vfs-read-ahead 0 预读取到磁盘的数据量(仅 full 模式)
--vfs-read-chunk-size 128M 分块读取的初始块大小
--vfs-read-chunk-size-limit off 分块大小上限,off 表示无限制
--vfs-read-wait 20ms 等待顺序读取的时间
--vfs-read-chunk-streams 0 并行下载流数量(适合高性能对象存储)

分块读取说明

Rclone 采用分块读取策略,初始块大小为 --vfs-read-chunk-size,然后逐次翻倍直到达到 --vfs-read-chunk-size-limit

1
2
3
4
5
# 示例:--vfs-read-chunk-size 100M --vfs-read-chunk-size-limit 500M
第1次读取: 0-100M
第2次读取: 100M-300M(块大小翻倍为200M)
第3次读取: 300M-700M(块大小翻倍为400M)
第4次读取: 700M-1200M(达到500M上限,保持500M)

读取优化建议

1
2
3
4
5
6
7
8
# 大文件顺序读取(视频、镜像等)
--buffer-size 256M --vfs-read-chunk-size 128M --vfs-read-chunk-size-limit off

# 小文件随机读取(代码、文档等)
--buffer-size 64M --vfs-read-chunk-size 32M --vfs-read-chunk-size-limit 128M

# 高性能对象存储(如 AWS S3)
--vfs-read-chunk-streams 16 --vfs-read-chunk-size 4M

五、目录缓存参数

参数 默认值 说明
--dir-cache-time 5m 目录列表缓存时间
--poll-interval 1m 轮询远程变更的间隔(需远程支持)
--vfs-fast-fingerprint false 使用快速指纹检测文件变更(不检查哈希)

目录缓存建议

1
2
3
4
5
6
7
8
# 单用户使用,远程很少被其他方式修改
--dir-cache-time 24h --poll-interval 0

# 多用户共享,需要及时看到变更
--dir-cache-time 5m --poll-interval 1m

# 完全只读,追求最佳性能
--dir-cache-time 168h --poll-interval 0

六、传输并发参数

参数 默认值 说明
--transfers 4 并行传输文件数
--checkers 8 并行检查文件数

并发建议

场景 --transfers --checkers 说明
保守设置 4 8 适合普通 NAS、低带宽
局域网 NAS 8 16 适合千兆局域网
高性能存储 16-32 32-64 适合万兆网络、高性能 NAS
云存储(S3等) 8-16 16-32 注意 API 限制

七、日志与调试参数

参数 默认值 说明
--log-level NOTICE 日志级别:DEBUG, INFO, NOTICE, ERROR
--log-file 日志输出文件路径
--stats 1m 统计信息输出间隔
--stats-one-line false 单行输出统计信息

八、场景化配置模板

场景 1:局域网 NAS 日常使用(本教程采用)

1
2
3
4
5
6
7
8
9
--vfs-cache-mode full \
--vfs-cache-max-size 200G \
--vfs-cache-max-age 24h \
--buffer-size 256M \
--vfs-read-chunk-size 128M \
--vfs-read-chunk-size-limit off \
--transfers 8 \
--checkers 16 \
--dir-cache-time 24h

场景 2:低配置设备 / 磁盘空间有限

1
2
3
4
5
6
7
8
9
--vfs-cache-mode writes \
--vfs-cache-max-size 5G \
--vfs-cache-max-age 1h \
--buffer-size 32M \
--vfs-read-chunk-size 32M \
--vfs-read-chunk-size-limit 64M \
--transfers 4 \
--checkers 8 \
--dir-cache-time 5m

场景 3:只读媒体库(视频、音乐等)

1
2
3
4
5
6
7
--vfs-cache-mode off \
--buffer-size 128M \
--vfs-read-chunk-size 64M \
--vfs-read-chunk-size-limit off \
--dir-cache-time 168h \
--poll-interval 0 \
--read-only

场景 4:开发环境(频繁读写小文件)

1
2
3
4
5
6
7
8
9
--vfs-cache-mode full \
--vfs-cache-max-size 50G \
--vfs-cache-max-age 12h \
--vfs-write-back 1s \
--buffer-size 64M \
--vfs-read-chunk-size 16M \
--transfers 16 \
--checkers 32 \
--dir-cache-time 1m

缓存目录说明

服务配置使用 /home/cpu/.rclone_cache 作为缓存目录(位于用户主目录下),请确保:

  1. 该路径所在分区有足够空间(建议预留 --vfs-cache-max-size 的 1.5 倍)
  2. 使用支持稀疏文件的文件系统(ext4、btrfs、xfs 等),避免使用 FAT/exFAT
  3. 如需更改缓存位置,同时修改 ExecStartPre--cache-dir 参数
  4. 请将路径中的 cpu 替换为你的实际用户名

性能提示:如果有 SSD,将缓存目录放在 SSD 上可显著提升性能


步骤 8:启用并启动服务

刷新 Systemd 配置

1
sudo systemctl daemon-reload

命令解释:

  • sudo systemctl daemon-reload:重新加载 systemd 管理器配置,使新创建的服务文件生效

启动服务

1
sudo systemctl start rclone-nas

检查服务状态

1
sudo systemctl status rclone-nas

预期输出:

1
2
3
4
5
6
● rclone-nas.service - Rclone Mount for NAS WebDAV (Ultra Performance)
Loaded: loaded (/etc/systemd/system/rclone-nas.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-12-22 20:33:21 CST; 1 day ago
Main PID: 3017 (rclone)
Status: "vfs cache: objects 0 in use 0, to upload 0, uploading 0"
...

设置开机自启动

1
sudo systemctl enable rclone-nas

命令解释:

  • sudo systemctl enable rclone-nas:创建符号链接,使服务在系统启动时自动运行

步骤 9:验证挂载

检查挂载状态

1
df -h /mnt/nas

预期输出:

1
2
文件系统        大小  已用  可用 已用% 挂载点
nas: 1.0P 0 1.0P 0% /mnt/nas

查看挂载内容

1
ls -la /mnt/nas/

测试读写

1
2
3
4
5
6
7
8
# 创建测试文件
echo "Hello NAS" > /mnt/nas/public/test.txt

# 读取测试文件
cat /mnt/nas/public/test.txt

# 删除测试文件
rm /mnt/nas/public/test.txt

传输优化策略

针对不同的传输场景,可使用以下优化参数:

大文件传输优化

适用于视频、镜像等大文件:

1
2
3
4
5
rclone copy /本地路径 nas:/远程路径 \
--transfers 8 \
--checkers 16 \
--buffer-size 256M \
--progress

大量小文件传输优化

适用于代码仓库、配置文件等小文件目录:

1
2
3
4
5
rclone copy /本地路径 nas:/远程路径 \
--transfers 16 \
--checkers 32 \
--buffer-size 128M \
--progress

参数对照表

场景 –transfers –checkers –buffer-size
大文件传输 8 16 256M
小文件传输 16 32 128M
混合场景 12 24 192M

常用管理命令

服务管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动服务
sudo systemctl start rclone-nas

# 停止服务
sudo systemctl stop rclone-nas

# 重启服务
sudo systemctl restart rclone-nas

# 查看服务状态
sudo systemctl status rclone-nas

# 查看服务日志
journalctl -u rclone-nas -f

手动挂载/卸载

1
2
3
4
5
# 卸载挂载点
sudo fusermount3 -u /mnt/nas

# 强制卸载(挂载点卡死时使用)
sudo umount -l /mnt/nas

查看 Rclone 日志

1
tail -f ~/rclone-nas.log

常见问题处理

1. 挂载失败:Transport endpoint is not connected

现象:访问 /mnt/nas 时提示 “Transport endpoint is not connected”

原因:Rclone 进程异常退出,但挂载点未正确清理

解决方案

1
2
3
4
5
6
7
# 强制卸载
sudo fusermount3 -u /mnt/nas
# 或
sudo umount -l /mnt/nas

# 重新挂载
sudo systemctl restart rclone-nas

2. 权限错误:allow-other 失败

现象:启动服务时提示 “fusermount: option allow_other only allowed if ‘user_allow_other’ is set”

原因:FUSE 配置未启用 user_allow_other

解决方案

1
2
sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf
sudo systemctl restart rclone-nas

3. 服务启动失败:找不到配置文件

现象:服务启动失败,日志显示找不到远程存储 “nas”

原因:systemd 服务以指定用户运行,但配置文件路径不正确

解决方案

确保服务文件中 --config 参数指向正确的配置文件路径:

1
2
3
4
5
# 检查配置文件位置
ls -la ~/.config/rclone/rclone.conf

# 确认服务文件中的路径一致
cat /etc/systemd/system/rclone-nas.service | grep config

4. 网络断开后无法自动恢复

现象:网络恢复后,挂载点仍然不可用

原因:Rclone 未能自动重连

解决方案:服务配置已包含 Restart=on-failure,会自动重启。如需手动恢复:

1
sudo systemctl restart rclone-nas

5. 缓存占用过多磁盘空间

现象~/.rclone_cache 目录占用空间过大

解决方案

1
2
3
4
5
6
7
# 查看缓存占用
du -sh ~/.rclone_cache

# 清理缓存(需先停止服务)
sudo systemctl stop rclone-nas
rm -rf ~/.rclone_cache/*
sudo systemctl start rclone-nas

或调整服务配置中的缓存参数:

  • --vfs-cache-max-size:减小最大缓存大小
  • --vfs-cache-max-age:减少缓存保留时间

配置文件汇总

Rclone 配置文件

路径:~/.config/rclone/rclone.conf

1
2
3
4
5
6
[nas]
type = webdav
url = http://192.168.5.5:5005
vendor = other
user = your_username
pass = encrypted_password

Systemd 服务文件

路径:/etc/systemd/system/rclone-nas.service

FUSE 配置文件

路径:/etc/fuse.conf

关键配置:user_allow_other


参考来源


总结

通过以上详细步骤,您已在 Ubuntu 24.04 桌面版上成功完成了使用 Rclone 挂载 NAS 的完整配置:

🎉 配置成果

  • Rclone 安装:最新版本 v1.72.1
  • WebDAV 连接:成功配置并测试连接
  • 本地挂载:NAS 已挂载到 /mnt/nas
  • 性能优化:针对大文件和小文件传输的参数调优
  • 自动启动:systemd 服务实现开机自动挂载
  • 故障恢复:服务异常自动重启

🔧 快速恢复清单

重装系统后,按以下顺序恢复 NAS 挂载:

  1. 安装 Rclone:curl https://rclone.org/install.sh | sudo bash
  2. 配置 FUSE:修改 /etc/fuse.conf
  3. 创建挂载点:sudo mkdir -p /mnt/nas
  4. 配置远程存储:rclone config
  5. 创建服务文件:复制 systemd 配置
  6. 启用服务:sudo systemctl enable --now rclone-nas

📁 关键文件位置

文件 路径
Rclone 配置 ~/.config/rclone/rclone.conf
服务文件 /etc/systemd/system/rclone-nas.service
运行日志 ~/rclone-nas.log
缓存目录 ~/.rclone_cache
挂载点 /mnt/nas

现在您可以像使用本地磁盘一样访问 NAS 存储了!如遇问题,请参考常见问题处理部分或查阅 Rclone 官方文档。