VPS 硬盘太小不够用?用 Rclone 把网盘与对象存储(S3)挂载为本地硬盘
2026-08-14 · DevCraft Studio
便宜 VPS 常常只给 10~20GB 硬盘,装几个媒体文件就爆满。用 Rclone + FUSE 把 Google Drive、OneDrive、MinIO 或 Scaleway S3 挂载成 VPS 上的本地目录,空间瞬间变大,还能挂 Plex/Emby、做自动备份。
先说痛点:便宜 VPS 的硬盘,真的不够看
不知道你有没有这种经历:兴冲冲买了台一年十几块的便宜 VPS,准备折腾点东西,结果 df -h 一看,硬盘总共就 10GB、20GB。装个系统占掉几个 G,再放点网站文件、几个视频、几张备份,空间就见底了。
说白了,便宜商家就是把"硬盘"这一项压得很低,用低价吸引你。可对我们这些真想往上面放东西的人来说,10GB 实在太局促——稍微存点媒体库、备份一下数据库,第二天就收到"磁盘使用率 95%"的报警邮件。
那怎么办?其实有个很老牌、也很靠谱的办法:把网盘或对象存储,挂载成 VPS 上的一个"本地文件夹"。挂载之后,你往这个文件夹里写文件,实际上是在往 Google Drive、OneDrive 或者某个 S3 桶里写;读文件也是从云端拉。对系统和程序来说,它跟一块真硬盘没啥两样。这样你的 VPS 就相当于有了"无限硬盘"(受限于你网盘的额度),而本地那 20GB 还是干干净净的。
下面要讲的工具,就是干这个事的神器:Rclone。
Rclone 是个啥?用大白话讲
Rclone 江湖人称"网盘界的瑞士军刀",它本来是用来在本地和几十种云存储之间同步、拷贝文件的。但它还有一个特别好用的功能:rclone mount,可以把云存储挂载成 Linux 上的一个目录。
它靠的是一项叫 FUSE(Filesystem in Userspace,用户态文件系统)的技术。大白话解释:通常只有内核才能决定"硬盘上怎么读写文件",FUSE 允许普通程序(比如 rclone)在用户态"假装"成一个文件系统。于是 rclone 在前台当好这个"假硬盘":你 cp、mv、ls 它都照单全收,背后它默默帮你把操作翻译成对云端的 API 调用。
需要说明一点,这个"假硬盘"终究不是真硬盘。它没有本地磁盘那么快(毕竟每次读写都要走网络),也不完全支持所有文件系统特性(比如某些软件对文件锁、随机写入要求很苛刻时可能出问题)。但对绝大多数用途——存文件、挂媒体库、做备份——它完全够用。咱们心里有这个数就行。
第一步:装上 Rclone
大多数 Linux 发行版都能直接装,但发行版仓库里的版本往往偏旧。建议用官方脚本装最新版:
sudo -v ; curl https://rclone.org/install.sh | sudo bash装完确认一下版本:
rclone version如果你的 VPS 是 Debian/Ubuntu,也可以用 sudo apt install rclone,只是版本可能旧一点。我个人更推荐上面的官方脚本。
另外,挂载需要 FUSE 支持。Debian/Ubuntu 上一般装 rclone 时会顺带装好;如果没有,手动补一下:
sudo apt install fuse3第二步:把网盘接进来(以 Google Drive / OneDrive 为例)
Rclone 用一个叫 remote(远程)的概念保存每个云盘的登录信息。先跑配置向导:
rclone config按提示走:输入 n 新建一个 remote,给它起个名字(比如 gdrive),然后在长长的列表里选对应的云盘类型(Google Drive、OneDrive 都有专门选项)。
重点来了:很多人买的 VPS 是没有图形界面的纯命令行服务器,没法在服务器上弹浏览器授权。 别慌,rclone 早就想到了。向导里会问你 Use web browser to automatically authenticate?(是否用浏览器自动授权),你选 n(否)。它会给你一个链接,你把链接复制到自己电脑的浏览器里打开、登录账号、点允许,最后拿到一串授权码,再粘贴回终端就行。
> 小建议:Google Drive 默认用 rclone 自带的公共客户端,多人共用容易触发 API 限流。如果你用量大,建议去 Google Cloud 控制台自己建一个 OAuth 客户端,把 client_id 和 client_secret 填进去,会更稳。新手先空着用默认的也没事。
配置完,rclone config 会把凭据写进 ~/.config/rclone/rclone.conf。验证一下能不能连上:
rclone lsd gdrive:能列出网盘里的目录,就说明接好了。
第三步:把对象存储(S3 / MinIO / Scaleway)也接进来
除了网盘,很多对象存储(AWS S3、MinIO、Scaleway、Wasabi、Cloudflare R2 等)也能挂载,而且它们通常比网盘更"规矩"——没有每天 750GB 上传上限那类限制,更适合当长期仓库。
配置一个 S3 类型的 remote(以 Scaleway 为例):
rclone config
# n 新建
# 名字:比如 s3scw
# 存储类型选 "Amazon S3 Compliant Storage Providers"
# provider 选 Scaleway
# 填 access_key_id、secret_access_key
# region:例如 fr-par
# endpoint:s3.fr-par.scw.cloud
# 其余基本回车用默认MinIO 这类自建 S3 同理,provider 选 Minio 或 Any other S3 compatible provider,再填你自己的 endpoint 即可。验证:
rclone lsd s3scw:第四步:挂载!真实命令与参数讲解
先建个本地挂载点目录:
mkdir -p ~/gdrive然后挂载 Google Drive(前台跑,方便看报错):
rclone mount gdrive: ~/gdrive \
--vfs-cache-mode full \
--vfs-cache-max-age 168h \
--cache-dir ~/.cache/rclone \
--dir-cache-time 1h \
--buffer-size 64M \
--allow-other \
--daemon挂载 S3 桶稍有不同(对象存储建议加 --no-modtime,减少不必要的元数据请求):
mkdir -p /mnt/s3
rclone mount s3scw:mybucket /mnt/s3 \
--vfs-cache-mode full \
--vfs-cache-max-size 5G \
--vfs-cache-max-age 24h \
--dir-cache-time 1h \
--buffer-size 32M \
--no-modtime \
--allow-other \
--daemon下面把几个关键参数掰开说清楚,这也是整篇文章的精华——参数没配好,要么慢,要么把 VPS 撑爆。
--vfs-cache-mode:这是 VFS(虚拟文件系统)缓存模式,有 4 档:
- off:完全直通,每次打开都去云端下载,最慢,一致性最强; - minimal:只缓存写文件的元数据,读还是走云端(默认值,适合纯只读); - writes:写入先落本地缓存,读仍可能远程拉取,适合"主要往里写"的场景(比如备份); - full:读写都经过本地缓存,第一次打开会把整个文件拉下来,之后从缓存读,最像本地硬盘,兼容性最好。挂媒体库、当日常硬盘用,强烈建议 full。
--cache-dir:缓存文件存在哪。注意!千万别指到/tmp这种可能是内存盘(tmpfs)的地方,否则缓存会把你的内存吃光。小硬盘 VPS 就指到你的真实磁盘目录(比如~/.cache/rclone或/mnt/rclonecache)。--vfs-cache-max-size:缓存总大小上限。比如5G、10G。设了之后,rclone 会自动清理最久没用的文件,别让缓存把本地盘写满。媒体库机器盘大的可以设 50G~200G,小机器就保守点,10G 上下。--vfs-cache-max-age:缓存文件最长保留多久。比如168h是 7 天。越大,重复访问越快,但也越占空间。--dir-cache-time:目录列表(文件夹里有哪些文件)在内存里缓存多久。默认 5 分钟。Google Drive 这类支持轮询的远端,可以放心设大(比如5000h),能大幅减少 API 调用,列表刷新更顺。--buffer-size:每个被打开的文件在内存里预读的缓冲,比如64M。开大点顺序读更快,但会占内存——小内存 VPS 别太贪,32M~64M 比较稳。--allow-other:允许系统里其他用户(比如跑网站、跑 Plex 的那个用户)访问这个挂载点。需要先在/etc/fuse.conf里把user_allow_other那行的注释去掉。--daemon:后台运行。加了这个,命令跑完终端就返回,挂载在后台默默干活。
卸载也很简单:
fusermount -uz ~/gdrive让它在开机时自动挂载(systemd 服务)
手动挂一次不够,VPS 重启后最好能自己恢复。写个 systemd 服务最稳:
sudo nano /etc/systemd/system/rclone-gdrive.service内容(把用户名和路径换成你自己的):
[Unit]
Description=Rclone Google Drive Mount
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
User=你的用户名
ExecStart=/usr/bin/rclone mount gdrive: /home/你的用户名/gdrive \
--vfs-cache-mode full \
--vfs-cache-max-age 168h \
--cache-dir /home/你的用户名/.cache/rclone \
--dir-cache-time 1h \
--buffer-size 64M \
--allow-other \
--log-level INFO \
--log-file /home/你的用户名/.cache/rclone/rclone.log
ExecStop=/bin/fusermount -uz /home/你的用户名/gdrive
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target存盘后启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now rclone-gdrive.service
systemctl status rclone-gdrive.serviceRestart=on-failure 的好处是:万一网络抖一下挂载掉了,它会自动重试,不用你半夜爬起来手动重挂。
缓存优化:别把 VPS 那点内存和临时盘撑爆
小 VPS 最怕的就是"缓存失控"。这里给几个实在的提醒:
- 缓存目录一定要落在真实磁盘上,别用 tmpfs/内存盘。可以用
df -h看一眼--cache-dir指向的分区是不是真的硬盘。 - 务必设
--vfs-cache-max-size。不设这个上限,缓存会一直涨,直到把盘写满,然后 Plex 放不出、程序报错,一查才发现盘满了。 --buffer-size别开太猛。它按"每个打开的文件"算内存,开 512M 同时开 10 个文件就是 5GB 内存,1GB 内存的小机器直接爆。32M~64M 通常够用。- Plex/Emby 的元数据、缩略图放本地。媒体文件在云端没关系,但 Plex 自己的数据库和缩略图一定要在本地 SSD 上,否则每次扫描都去云端拉,又慢又烧 API 额度。
- 留意网盘的每日额度。Google Drive 和 OneDrive 对"上传"都有每天约 750GB 的上限,短期内猛塞大量文件会被限流。用
--bwlimit 100M之类的参数限速、错峰上传更稳妥。
这玩意到底能拿来干啥?
说了半天技术,落到实用场景上,主要有这么几类:
- 给 Plex / Emby 当媒体库:把电影、剧集放在 Google Drive 或 OneDrive,挂到 VPS 本地目录,Plex/Emby 直接扫描这个目录就能播。家里 NAS 空间不够的,这就是"云上大盘鸡"。注意:VPS 上一般不建议实时转码(太吃 CPU),播放端选"原画"更稳。
- 自动备份:把本地重要数据定时同步到云端。比如每天把数据库备份、网站文件
rclone copy上去:
rclone copy /var/backups gdrive:server-backups --bwlimit 20M或者双向同步用 rclone sync(注意 sync 是"以源为准",目标上多出来的文件会被删,第一次用先 --dry-run 试跑)。
- 当静态文件仓库:对象存储(S3/Scaleway)特别适合长期存冷数据、日志归档、安装包等。挂载后像本地文件夹一样
cp进去就行,成本比扩容 VPS 硬盘低得多。 - 合并多盘(进阶):配合
union或mergerfs,可以把多个网盘、本地盘合成一个统一目录,空间叠加着用。
几个容易踩的坑
- 权限问题:挂出来其他用户访问不了,多半是忘了开
--allow-other和/etc/fuse.conf里的user_allow_other。 - 递归拷贝误伤:挂载后目录看着像本地盘,但
cp -r一大片、或者rsync配错方向,可能瞬间把你网盘额度刷爆。重要的传输用rclone copy/rclone sync显式指定,别拿普通cp乱造。 - 不要把系统关键目录挂到云端:比如别把
/var、网站根目录直接设为挂载点去"借空间",万一云端抽风,网站就瘫了。建议单独挂一个干净的目录(如~/gdrive、/mnt/s3)专门放"可云端化"的文件。 - 配置文件要保密:
rclone.conf里是明文令牌,chmod 600 ~/.config/rclone/rclone.conf收好权限,别泄露。
结论
便宜 VPS 硬盘小,不是没法补救。用 Rclone 把 Google Drive、OneDrive 或者 S3 对象存储挂载成本地目录,相当于给你的小机器接了一块"无限大的外接硬盘"——媒体库、备份、冷文件存储都能丢上去,本地那 20GB 始终保持清爽。
记住核心就三件事:装好 rclone 和 FUSE → 配好 remote 并搞定授权 → 用带缓存参数的 rclone mount 挂上去,再用 systemd 设成开机自启。参数上别偷懒,把 --vfs-cache-mode、--cache-dir、--vfs-cache-max-size 这几个配明白,既跑得顺,也不会把 VPS 那点内存和临时盘撑爆。折腾一次,长期受益,这才是便宜 VPS 的正确打开方式。
---
延伸阅读
更多相关攻略推荐:从 Git Push 到秒级上线:CI/CD 流水线与"无中断"发布、【VPS 进阶玩法精选 030】用 VPS 搭建云端 IDE(cod、连云厂商也看不到你的数据?机密计算(Confidential Com、被割裂的"云上互联网":数据主权(GDPR)、本地化存储与主权云(S、什么时候非得要独立 IPv4?便宜国外 VPS 独立 IP 适用场景。