Ludusavi 云备份完全指南:如何用 Rclone 把游戏存档同步到云端
【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi
游戏存档只存在这一台机器上,磁盘故障、系统重装、搬家用新电脑,任何一次意外都足以让几百小时的进度清零。Ludusavi 云备份把本地备份目录同步到云端,给存档上一道异地容灾的保险。读完这篇指南,你能为 Ludusavi 接上一家云端存储、跑通第一次自动上传,还会处理云端冲突、调快同步速度。
第一次把备份送进云:GUI 五步走
用图形界面是最省事的路径。打开 Ludusavi,顶部切到 OTHER 页签:
- 在远程类型下拉框里选一家服务商,比如 Google Drive;
- 按提示补齐凭据(OAuth 类服务会弹出浏览器授权,FTP/SMB/WebDAV 则填主机、用户名、密码);
- 云路径(Cloud folder)保持默认
ludusavi-backup即可; - 确认自动同步(synchronize)开关处于开启状态,它默认就是开的;
- 保存后点一次上传,第一份备份就进了云。
保存前界面会实时校验两件事:remote 是否已配置、云路径是否合法(空字符串和单独的/都会被判为非法),不满足时给出对应的cloud not configured或cloud path invalid警告。
偏爱命令行的话,一条命令就能完成远程配置:
ludusavi cloud set google-drive它会打开浏览器让你授权,随后把生成的 remote 写进配置。之后执行一次备份,开启的自动同步就会在备份完成后把变更推上去;也可以直接手动推:ludusavi cloud upload --force。
同步引擎幕后:Ludusavi 给 Rclone 发了什么指令
Ludusavi 自己不对接任何云协议,它把 Rclone 当外部引擎用:先本地备份,再用rclone sync把backup.path指向的目录与云端对齐。真正的命令构造与进程管理在 src/cloud.rs,一次同步长这样:
rclone sync -v --use-json-log --stats=100ms \ [--dry-run] [--include=/<游戏目录>/**] <本地目录> <remote_id>:<云路径>围绕这条命令,有几个值得知道的细节:
- 进度从 JSON 日志里来:
--use-json-log让 Rclone 逐行吐 JSON,Ludusavi 解析其中三类信息——msg、skip、stats。Copied (new)记为新增(New),Copied (replaced existing)和skip copy记为内容差异(Different),Deleted和skip delete记为删除(Removed);stats里的bytes/total_bytes驱动进度条。 - 按游戏过滤:只想同步部分游戏时,每个游戏追加一条
--include=/<游戏目录>/**。Rclone 的包含规则是文件级的,所以末尾的**不能省。 - 远程路径规整:云端一侧统一写成
remote_id:路径的形式,并且把\全部替换成/,以符合 Rclone 非本地路径的语法。 - 退出码即成败:进程以退出码
0判定成功;非零退出时会收集 stdout/stderr 组成错误。上传前如果发现本地目录不存在(此时 Rclone 会以退出码 3 失败),Ludusavi 会先自动创建该目录。
Ludusavi 能接哪些云:远程类型与填表字段
任何 Rclone remote 都能用,Ludusavi 额外给常见服务配了填写辅助。官方验证过的版本是 Rclone 1.62.2,其他版本一般也能正常工作。
| 你在 GUI 里选的 | Rclone 后端(slug) | 需要你填的字段 |
|---|---|---|
| Custom | 无(id指向一个已存在的 Rclone remote) | id |
| Box | box | id |
| Dropbox | dropbox | id |
| Google Drive | drive | id |
| OneDrive | onedrive | id |
| FTP | ftp | id、host、port、username、password |
| SMB | smb | id、host、port、username、password |
| WebDAV | webdav | id、url、username、password、provider |
保存远程时,Ludusavi 会用rclone config create <id> <slug> <参数...>把参数一次性写入 Rclone 配置;切换远程时则用rclone config delete <id>清掉旧配置。除id之外,各类型自动附加的参数是:
| 类型 | 自动附加的 Rclone 参数 |
|---|---|
| Google Drive | scope=drive |
| OneDrive | drive_type=personal、access_scopes=Files.ReadWrite,offline_access |
| FTP / SMB | host、port、user、pass |
| WebDAV | url、user、pass、vendor |
| Box / Dropbox / Custom | 无 |
密码混淆、自动 remote id 与 WebDAV 服务商
三个安全相关的机制值得单独说清:
- 密码先混淆再落盘:FTP、SMB、WebDAV 的密码写入配置前会先调用
rclone obscure加密,相关执行日志按私密信息处理;Google Drive、OneDrive、Box、Dropbox 走 OAuth,配置文件里只存 remoteid。 - remote id 自动防撞:除 Custom 外,
id由程序生成,形如ludusavi-<Unix 时间戳>,避免和已有 remote 重名。 - WebDAV 服务商细分:
provider字段对应 Rclone WebDAV 的vendor参数,共五个取值——other(默认)、nextcloud、owncloud、sharepoint、sharepoint-ntlm。
云端冲突时先下载还是先上传:自动同步的裁决逻辑
cloud.synchronize打开后,每次备份开始时 Ludusavi 先做一次"预检":以上传方向 + dry-run的方式跑一遍 sync,看本地和云端是否已经一致。
- 预检无任何变更:两边一致,备份完成后自动把变更上传。
- 预检发现云端有差异(即两边本来就不一致),进入冲突分支,行为取决于你指定的方向:
| 指定方向 | 行为 | 出错时的错误字段 |
|---|---|---|
| 未指定 | 不自动同步,云端数据保持原样 | errors.cloudConflict |
Download | 先把云端内容下载到本地,再执行本次备份(保证mapping.yaml等元数据连贯) | 预下载失败则errors.cloudSyncFailed |
Upload | 先完成本地新备份,随后无论如何都强制上传一次 | 上传失败则errors.cloudSyncFailed |
备份落盘后的收尾阶段,只对本次有实际备份产物的游戏执行上传同步;同步失败同样上报errors.cloudSyncFailed。这两个字段在 API 输出模式中都有对应定义,脚本可以据此判断是否需要人工介入。
真遇到冲突,建议动作很直接:回到 OTHER 页签手动执行一次上传或下载,把两边对齐。
手动上传下载与脚本化:cloud upload / cloud download
GUI 之外,CLI 提供了一对对称子命令:
ludusavi cloud upload [--local <路径>] [--cloud <路径>] [--force] [--preview] [--api] [--gui] [游戏名...] ludusavi cloud download [--local <路径>] [--cloud <路径>] [--force] [--preview] [--api] [--gui] [游戏名...]| 参数 | 含义 |
|---|---|
--local | 本地备份目录;缺省取配置中的backup.path |
--cloud | 云端备份目录;缺省取cloud.path(默认ludusavi-backup) |
--force | 跳过确认提示 |
--preview | 只预览将发生的变化,对应 Rclone 的--dry-run |
--api | 输出机器可读 JSON,替代人类可读输出 |
--gui | 用 GUI 对话框做提示 |
游戏名... | 只同步指定游戏,也支持从 stdin 逐行传入 |
执行流程(src/cli.rs 中的sync_cloud):校验 Rclone 配置与云路径 → 把游戏名映射为备份布局里的目录名 → 启动 Rclone 子进程 → 循环消费进度事件刷新进度条 → 按退出码判定成败。期间按 Ctrl+C(SIGINT)会立即 kill 子进程并退出。
用--api时,输出顶层有个cloud对象,以"相对于云文件夹的文件路径"为键,列出每个文件的同步结果;每条结果里还带一个与云端(上传时)或本地(下载时)版本比较的字段,方便你在脚本里判断这次同步到底动了什么。
同步太慢?试试这几组引擎参数
云同步速度受带宽、云端服务状态和 Rclone 自身限制共同影响。嫌慢的话,在 OTHER 页签的参数框或config.yaml的apps.rclone.arguments里加自定义参数:
| 参数 | 适用场景 |
|---|---|
--fast-list | 文件多、目录深的备份集,用更少的内存批量列举远程目录,提速明显 |
--ignore-checksum | 跳过哈希校验、只按大小和修改时间判断差异,显著加速 |
--transfers=1 | 并发压到 1,规避部分服务商的限流,但整体速度会变慢 |
arguments默认是空字符串,官方配置模式里的示例起步写法就是--fast-list --ignore-checksum。注意这些参数作用于每一次Rclone 调用——包括sync,也包括config create、obscure这类配置命令。它们经 shell 分词后置于命令最前,Ludusavi 自身追加的参数在其后,所以只选全局安全的 flag。
apps: rclone: path: "C:/opt/rclone.exe" # Rclone 可执行文件路径 arguments: "--fast-list --ignore-checksum" cloud: path: ludusavi-backup # 云端备份文件夹,默认 ludusavi-backup remote: ~ # 建议经 GUI 或 cloud set 修改,手动改文件不同步 Rclone synchronize: true # 备份后自动上传变更,默认 trueFlatpak 沙箱与"云盘伪装成本地文件夹"
沙箱里看不到宿主机的 Rclone
Linux 上通过 Flatpak 安装的 Ludusavi 默认被关在沙箱里,看不到系统装的 Rclone。包内其实自带了一份副本,直接把它填进 Rclone 可执行路径即可:
/app/bin/rclone更想用宿主机自己的 Rclone(比如复用已完成 OAuth 的远程),做两步:
- 授予宿主文件系统访问权限:
flatpak override com.github.mtkennerly.ludusavi --filesystem=host- Rclone 可执行路径改填
/var/run/host/usr/bin/rclone。
想连同宿主机的 Rclone 配置一起复用,再把下面这行追加到 Ludusavi 的 Rclone 参数里(<USER>换成实际用户名):
--config /home/<USER>/.config/rclone/rclone.conf打包层面的元数据可参考 assets/flatpak/com.github.mtkennerly.ludusavi.metainfo.xml。
不走 Rclone 同步的三条替代路
只要云存储能被呈现成一个普通本地文件夹,Ludusavi 就能直接把它当备份目标(把backup.path指向它):
- Google Drive for Desktop:会创建特殊盘符(如 Windows 的
G:)做流式读写,备份目标设为该盘下的目录; - Syncthing:持续把一个本地文件夹跨设备同步,备份目标设为那个本地文件夹;
- Rclone 的 mount 功能:把远程挂载成本地目录,备份目标设为挂载点。
这三条路的共同点:Ludusavi 只看到"一个目录",完全无感知,云端差异交给外部工具收敛,因此也不会触发上文那套冲突预检流程。
配置核对清单与常见坑速查
落地前逐项打勾:
- Rclone 可执行路径有效(Flatpak 下用
/app/bin/rclone或已授权的宿主路径) - remote 已通过 GUI 或
cloud set配置成功 - 云路径非空且不是单独的
/ synchronize开关符合预期(开启才有自动同步)- 自定义参数只用全局安全的 flag
| 症状 | 处理 |
|---|---|
想手改config.yaml里的cloud.remote | 别改。任何变更都要与 Rclone 同步才生效,走 GUI 或cloud set |
出现cloudConflict | 数据冲突无法自动同步,到 OTHER 页签手动上传或下载对齐 |
出现cloudSyncFailed | 自动同步尝试失败(如 Rclone 不可用),先检查可执行路径与参数 |
| 同步明显偏慢 | 加--fast-list --ignore-checksum;被限流再试--transfers=1 |
| 只想同步个别游戏 | cloud upload/download后跟游戏名,或从 stdin 逐行传入 |
更多细节可查官方帮助文档 docs/help/cloud-backup.md 与命令模式 docs/schema/general-output.yaml。
【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考