Ludusavi Rclone 云备份指南:把游戏存档安稳上云
【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi
一块硬盘损坏,几年的存档进度就可能清零,换盘之后唯一的安慰是云端还留着副本。Ludusavi 的云备份能力正是为这种场景设计的:它通过内置的 Rclone 集成,把本地备份目录与任意云存储保持同步,让每份游戏存档都有一份异地容灾的拷贝。
🚀 快速起步:5 分钟搭好第一套云备份
这一节的目标是让你在半小时内跑通"本地 → 云端"的完整链路,不用理解每一个字段。
前提是系统里已经装好 Rclone,并且你知道它放在哪里(路径要填给 Ludusavi)。
GUI 最短路径,全部发生在 "other" 屏幕:
- 填入 Rclone 可执行路径(如
C:/opt/rclone.exe); - 在远程下拉框选 Google Drive,完成浏览器里弹出的授权;
- 云文件夹保持默认即可;
- 回到主界面跑一次 Back up,备份完成后会看到自动上传(自动同步默认开启)。
CLI 最短路径:
ludusavi cloud set google-drive ludusavi cloud upload --force第一条命令把 Rclone 远程配置写好、顺带完成授权;第二条把本地备份直接推上云端。
同步是怎么跑的:Ludusavi 与 Rclone 各管一摊
第一次上传成功之后,打开引擎盖看看里面发生了什么。
分工很干净:Ludusavi 是"打包工",决定哪些文件进箱——存档识别与打包都由它完成;Rclone 是"搬运工",只管传输、比对与上传。云备份的核心实现在 src/cloud.rs,每次同步实际发出的命令是:
rclone sync -v --use-json-log <本地备份目录> <remote_id>:<云路径>-v --use-json-log让 Rclone 以 JSON 逐行输出日志,Ludusavi 再把行翻译成三类文件级事件:
Copied (new):云端新增的文件,记为"新增";Copied (replaced existing):云端已有但内容不同,记为"差异";Deleted:本地已删除的文件,记为"删除"。
stats行里的bytes/total_bytes数值则驱动进度条。还有两个小约定:远端目录统一写成remote_id:path,路径中的反斜杠会被转成正斜杠;进程退出码为 0 判定成功,而上传时若本地目录不存在(此时 Rclone 返回退出码 3),Ludusavi 会先创建目录再发命令。
配置全景:Ludusavi Rclone 配置一览
这一节把 GUI、配置文件、命令行三套入口的配置项汇在一起,方便按需取用。
GUI "other" 屏幕:最直观的入口
云备份区块包含五类控件:
- Rclone 可执行路径与全局参数(对应
apps.rclone.path/arguments); - 远程类型下拉框:None、Custom 与六种预配置服务(Box、Dropbox、Google Drive、OneDrive、FTP、SMB、WebDAV),选中后显示对应的凭据字段——主机、端口、账号密码,WebDAV 另有 URL 与服务商;
- 云文件夹:云端的目录名,默认
ludusavi-backup; - 自动同步开关(synchronize):控制备份完成后是否自动上传;
- 上传 / 下载按钮:随时手动对齐两边数据。
屏幕实时执行两条校验,不满足就标红:remote 未配置时提示cloud not configured;云路径为空或为/时提示cloud path invalid。两条都通过,上传 / 下载按钮才会出现(校验逻辑见 src/gui/screen.rs)。
config.yaml:配置文件里长什么样
配置文件中的相关段落(完整结构见 docs/schema/config.yaml):
apps: rclone: path: "C:/opt/rclone.exe" # Rclone 可执行文件路径 arguments: "--fast-list --ignore-checksum" # 附加到每次 Rclone 调用的全局参数 cloud: path: ludusavi-backup remote: GoogleDrive: id: "ludusavi-1234567890" synchronize: true带密码的远程(FTP / SMB / WebDAV)其密码字段序列化时会被跳过,从不落盘。remote字段的源码注释(src/resource/config.rs)明确要求经 GUI 或cloud set命令修改:手工改动只会更新 Ludusavi 这一侧的记录,Rclone 配置里的对应远程并没有被创建或删除,两边会就此脱节。
CLI 两条命令链:cloud set 与 upload / download
子命令定义在 src/cli/parse.rs,执行逻辑在 src/cli.rs。配置远程:
ludusavi cloud set none # 关闭云备份 ludusavi cloud set custom --id my-remote # 复用已存在的 Rclone 远程 ludusavi cloud set google-drive # Box / Dropbox / OneDrive 同理 ludusavi cloud set ftp --host ftp.example.com --username alice --password <pass> # 默认端口 21 ludusavi cloud set smb --host nas.example.com --username alice --password <pass> # 默认端口 445 ludusavi cloud set webdav --url https://dav.example.com --username alice --provider nextcloudWebDAV 的--provider可取other(默认)、nextcloud、owncloud、sharepoint、sharepoint-ntlm,对应 Rclone WebDAV 后端的vendor参数。
手动上传 / 下载与自动同步走的是同一套机制,参数共享:
ludusavi cloud upload [--local <路径>] [--cloud <路径>] [--force] [--preview] [--api] [--gui] [游戏名...] ludusavi cloud download [--local <路径>] [--cloud <路径>] [--force] [--preview] [--api] [--gui] [游戏名...]| 参数 | 含义 |
|---|---|
--local | 本地备份目录;缺省取配置文件中的backup.path |
--cloud | 云端文件夹;缺省取cloud.path |
游戏名... | 只同步指定游戏,也支持经 stdin 每行一个传入 |
--preview | 只预览将发生的变化(即 Rclone 的--dry-run),不动数据 |
--force | 跳过确认提示 |
--api | 以机器可读 JSON 输出每个文件的同步结果 |
--gui | 用 GUI 对话框做提示 |
各远程类型要填的字段与自动附加的参数对照(逻辑在Remote::config_args(),见 src/cloud.rs):
| 远程类型 | 需填写的字段 | 写入 Rclone 配置时自动附加的参数 |
|---|---|---|
| Custom | id(指向已有远程) | 无,不写 Rclone 配置 |
| Box / Dropbox | id | 无(走 OAuth 流程) |
| Google Drive | id | scope=drive |
| OneDrive | id | drive_type=personal、access_scopes=Files.ReadWrite,offline_access |
| FTP | host、port、username、password | host、port、user、pass |
| SMB | host、port、username、password | host、port、user、pass |
| WebDAV | url、username、password、provider | url、user、pass、vendor |
本地与云端不一致时:Ludusavi 的决策链
这一节讲自动同步背后的判断过程,是整套机制里最容易误解的部分。
开启cloud.synchronize后,每次备份开始时 Ludusavi 会先以上传方向发一次带--dry-run的"侦察"(src/api.rs),量出本地与云端的差距,随后按结果分叉:
- 侦察无差异:两边本就一致,备份完成后直接上传本次产生的变更;
- 侦察有差异:说明这次备份开始前两边已经分家,按策略三选一:
| 策略 | 行为 | 适用场景 |
|---|---|---|
| Download | 先把云端拉到本地再开始本次备份,保证mapping.yaml等元数据连贯 | 云端比本地更新、更可信时 |
| Upload | 先完成本地备份,结尾无条件向云端强推一次 | 已确认本地是唯一可靠来源 |
| 默认(未指定方向) | 云端原样保留,记录cloudConflict | 需要人工查看差异后自行决定 |
即便走 Upload 策略,Ludusavi 也只同步"本次备份中确有实际产物的变更游戏",没变化的游戏不占网络。流程中的任何失败(Rclone 不可用、网络异常等)记为cloudSyncFailed,与cloudConflict(表示"有冲突"而非"失败")区分开,
【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考