
Ludusavi 云备份完整指南Rclone 存档同步、冲突处理与性能调优【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusaviLudusavi 云备份的本质是把本地备份目录交给 Rclone 驱动与任意受支持的云端双向同步让游戏存档在硬盘故障、换机、多设备共用时都有第二份可靠副本。本文覆盖从 Rclone 原理、三种配置路径到自动同步的冲突分支和调优参数。读完后你可以在 Google Drive、OneDrive、Dropbox、Box、FTP、SMB、WebDAV 任一服务上配置好 Ludusavi 云备份并独立处理同步冲突与性能问题。单机崩溃、换机与多设备三个真实场景本地只剩单份备份。你每天备份 Steam 存档但备份目录就在同一块硬盘上。硬盘一坏存档与备份一起消失。云备份把同一份产物再落到异地单机故障不再等于存档归零。迁移新机器。旧主机退役前cloud download一条命令把云端备份拉进新机的备份目录恢复流程照常走不需要搬硬盘或拷 U 盘。多设备共用存档。工作室主机和家用机各有一份 Ludusavi 备份cloud upload与cloud download就能在两台机器之间对齐数据。代价是必须避免两台机器同时写入同一云端目录——这正是后面冲突检测要管的事。谁调用谁Ludusavi 如何驱动 RcloneLudusavi 自身不实现任何云存储协议它把 Rclone 当作外部引擎Rclone结构体聚合可执行文件路径、自定义参数与远程配置RcloneProcess负责启动子进程、逐行解析日志、上报进度src/cloud.rs。实际发出的同步命令形如rclone sync -v --use-json-log --stats100ms --progressfalse \ [--dry-run] [--include/游戏/**] 源 目标命令构造见sync_argssrc/cloud.rs方向由参数顺序决定上传时本地备份目录在前、云端在后下载则相反。云端目标写作remote_id:云路径反斜杠会被替换为正斜杠src/cloud.rs。数据流是先本地备份、后云端同步识别与打包存档仍由 Ludusavi 完成云端只承载备份产物。Rclone 以--use-json-log逐行输出Ludusavi 解析skip、msg、stats三类日志还原每个文件的结果src/cloud.rsCopied (new)计为新增、Copied (replaced existing)计为变更、Deleted计为删除bytes/total_bytes驱动进度条。GUI 侧由rclone_monitor以订阅方式轮询进程事件用户取消时直接kill子进程src/cloud.rs。上传时若本地目录不存在Ludusavi 会先创建目录再启动 Rclone避免其以退出码 3 失败src/cloud.rs。官方验证的版本是 Rclone 1.62.2其他版本通常也能工作docs/help/cloud-backup.md。除任何 Rclone remote都可用外Ludusavi 对 Google Drive、OneDrive、Dropbox、Box、FTP、SMB、WebDAV 提供开箱即用的配置辅助保存远程时执行rclone config create写入 Rclone 配置切换远程时执行rclone config delete清理旧配置src/cloud.rs。其中 FTP、SMB、WebDAV 的密码写入前会先经rclone obscure加密src/cloud.rsLudusavi 的config.yaml里不落明文。在 GUI 的 Other 屏幕配置云备份打开 Other 屏幕配置分三步。先让 Rclone 可用。在 Rclone executable 一栏填写可执行文件路径或点浏览按钮选择。路径为空或不可用时屏幕会显示 Rclone 不可用警告且下方远程相关控件不会解锁src/gui/screen.rs。再选远程类型并填字段。Remote 下拉框给出 None / Box / Dropbox / Google Drive / OneDrive / FTP / SMB / WebDAV / Custom 九项src/cloud.rs。非 Custom 类型由 Ludusavi 自动生成远程 id其余字段按类型填写——FTP/SMB 需要 host、port、username、passwordWebDAV 还需 url 与 providerCustom 指向一个已存在的 Rclone remote。Cloud folder 默认ludusavi-backup不能为空、也不能是/src/cloud.rs。最后决定同步方式。配置合法后屏幕会出现 Upload、Download 按钮和 Synchronize automatically 开关。勾选开关后每次备份会自动预检并上传不勾选就完全靠手动按钮或 CLI。注意Upload/Download 按钮只在三个条件同时满足时才显示Rclone 可用、remote 已配置、云路径合法缺一项就只显示对应的 cloud not configured 或 cloud path invalid 警告src/gui/screen.rs。用 config.yaml 持久化云备份参数使用 CLI 或想固化设置时编辑应用文件夹下的config.yaml相关段落有两处apps: rclone: path: C:/opt/rclone.exe # Rclone 可执行文件路径 arguments: --fast-list --ignore-checksum # 追加到每次 Rclone 命令的全局参数 cloud: path: ludusavi-backup # 云端备份文件夹 remote: ~ # Rclone 远程配置默认未配置 synchronize: true # 备份后自动上传变更无冲突时注意remote字段的文档明确建议通过 GUI 或cloud set命令修改因为任何变更都需要与 Rclone 侧同步才能真正生效——手写文件很可能导致 Rclone 里根本没有这个 remotesrc/resource/config.rsschema 见 docs/schema/config.yaml。remote采用 camelCase 序列化例如cloud: remote: GoogleDrive: id: ludusavi-1234567890FTP、SMB、WebDAV 的password字段序列化时被跳过src/cloud.rs凭据实际存放在 Rclone 自己的配置文件中。用 ludusavi cloud set 一条命令配好远程命令行下用cloud set完成远程配置执行逻辑见 src/cli.rs子命令定义见 src/cli/parse.rsludusavi cloud set none # 关闭云备份清除 remote 并保存配置 ludusavi cloud set custom --id remote-id # 复用已存在的 Rclone 远程 ludusavi cloud set google-drive ludusavi cloud set onedrive ludusavi cloud set box ludusavi cloud set dropbox ludusavi cloud set ftp --host host [--port 21] --username user [--password pass] ludusavi cloud set smb --host host [--port 445] --username user [--password pass] ludusavi cloud set webdav --url url --username user [--password pass] [--provider other]FTP 默认端口 21、SMB 默认 445WebDAV 的--provider可取other、nextcloud、owncloud、sharepoint、sharepoint-ntlm默认othersrc/cli/parse.rs。除 Custom 外其余类型会由 Ludusavi 自动生成远程 id 并触发rclone config create完成授权与写入。三条路径共享的参数汇总如下参数位置默认值说明Rclone 可执行路径GUI Rclone executable 栏 /apps.rclone.path自动探测 PATH空或不可用时所有云功能禁用全局 Rclone 参数GUI Rclone arguments 栏 /apps.rclone.arguments--fast-list --ignore-checksum原样拼进每次 Rclone 调用云远程GUI Remote 下拉 /cloud set/cloud.remote未配置建议经 GUI 或cloud set修改云文件夹GUI Cloud folder /cloud.pathludusavi-backup不能为空、不能为/自动同步开关GUI 复选框 /cloud.synchronizetrue备份后自动上传变更冲突处理方向backup/restore的--no-force-cloud-conflictAPI 输入resolveCloudConflict不自动处理取值upload或download运行时机制自动同步如何绕开冲突启用cloud.synchronize后每次备份的云端流程分三步实现见 src/api.rs预检。备份开始前先以 dry-run 方式跑一次上传方向的rclone sync确认本地与云端是否已对齐。分支。按预检结果与冲突策略走不同路径预检结果指定方向Ludusavi 的行为无差异任意本地备份完成后把本次有实际产物的游戏上传云端有差异未指定不动云端数据记录cloudConflict交互模式下询问处理方式有差异Download先下载云端内容到本地再执行本次备份保证mapping.yaml等元数据连贯有差异Upload先完成本地备份随后强制上传一次即使本次没有任何新产物收尾。最终上传只覆盖有实际备份产物的游戏scan_info.needs_cloud_sync() backup_info.is_some()src/api.rs同步失败记cloudSyncFailed预检本身失败则中止流程src/api.rs。排错时认准这几个出口现象字段 / 位置处置建议Rclone 路径无效命令报错 Rclone 不可用src/cloud.rs先填对 Rclone 路径云功能一律不启动remote 未配置cloud not configuredsrc/gui/screen.rsGUI 选远程或执行ludusavi cloud set云路径为空或/cloud path invalidsrc/cloud.rs换一个具体的云文件夹名两侧数据冲突errors.cloudConflictdocs/schema/general-output.yaml手动cloud upload或cloud download对齐后重试同步过程失败errors.cloudSyncFaileddocs/schema/general-output.yaml检查网络、远程凭据与 Rclone 版本手动触发一次上传或下载冲突处理之外上传与下载随时可手动执行src/cli.rsludusavi cloud upload [--local 路径] [--cloud 路径] [--force] [--preview] [--api] [--gui] [游戏名...] ludusavi cloud download [--local 路径] [--cloud 路径] [--force] [--preview] [--api] [--gui] [游戏名...]参数语义--local缺省取backup.path--cloud缺省取cloud.path--force跳过确认提示--preview只做 dry-run 预览--api以 JSON 输出结果--gui用 GUI 对话框提示游戏名作位置参数传入也可从 stdin 逐行读取src/cli/parse.rs。执行流程是校验 Rclone 配置与云路径把游戏名映射成备份布局中的目录名启动RcloneProcess循环消费进度事件刷新进度条按退出码判定成败期间收到 SIGINT 会立即杀掉 Rclone 子进程并退出src/cli.rs。--api模式下顶层cloud字段以相对云文件夹的文件路径为键列出每个文件的同步结果可供脚本消费docs/schema/general-output.yaml。性能调优与 Flatpak 沙箱 ⚙️默认注入的全局参数是--fast-list --ignore-checksumsrc/resource/config.rs在apps.rclone.arguments或 GUI 的 Rclone arguments 栏修改。逐个看适用场景与副作用参数适用场景副作用--fast-list文件多、目录深的备份集批量列举远程更省内存需要额外内存--ignore-checksum内容未变但哈希不同的场景仅按大小与修改时间判断差异内容被原地修改且大小时间都未变时可能漏检--transfers1被服务商限流时限制并发传输数为 1整体速度可能更慢注意这些参数会原样拼进每一次Rclone 调用含sync、config create、obscure所以要选全局安全的 flagssrc/cloud.rs。Ludusavi 自身还会在自定义参数之后强制追加--progressfalse因为终端进度输出与 JSON 日志解析不兼容src/cloud.rs——即使你在自定义参数里写了--progress也会被后置值覆盖。Flatpak 环境给沙箱里的 Rclone 指条路Flatpak 安装的 Ludusavi 处于沙箱内默认看不到宿主机的系统 Rclone。三种处理直接用包内副本。Flatpak 包内置了一份 Rclone把 Rclone 可执行路径填成/app/bin/rclone即可docs/help/cloud-backup.md。复用宿主机 Rclone。先授权宿主文件系统访问再把路径指向宿主可执行文件flatpak override com.github.mtkennerly.ludusavi --filesystemhost然后在 Ludusavi 中填/var/run/host/usr/bin/rclone。复用宿主机的 Rclone 配置。例如宿主已完成 OAuth 授权把配置参数附加到 Rclone 参数列表--config /home/USER/.config/rclone/rclone.conf其中USER替换为实际用户名。这样包内 Rclone 也能直接使用已有的远程授权。替代路线把云盘伪装成本地文件夹不依赖 Rclone 也能实现异地备份前提是云存储能呈现为一个普通文件夹——把 Ludusavi 的备份目标backup.path指向它即可。Google Drive for Desktop。它会创建特殊盘符Windows 下如G:用于流式读写云文件把备份目标设为该盘下的目录即可。代价需要常驻客户端且云盘离线时 Ludusavi 的备份/恢复会直接失败。Syncthing。持续把某个本地文件夹跨设备同步Ludusavi 只针对这个本地文件夹工作。代价它本身不是云端只是设备间中继仍需要一个真正落盘的端点多端并发写同一目录时的冲突由它收敛Ludusavi 完全不感知。Rclone 的 mount 功能。把 Rclone 远程挂载为本地目录备份目标指向挂载点。代价挂载点必须常驻读写性能受 FUSE 与网络双重限制且绕过了 Ludusavi 的自动同步与冲突预检两侧差异全靠挂载层的同步行为兜底。三者的共同代价是功能损失没有 Ludusavi 的自动同步、冲突预检与进度事件备份与云之间变成一个文件夹的简单关系多设备同时写入时行为不可控。小结云备份只有一条线要记牢配置入口用 GUI Other 屏幕或ludusavi cloud set数据流动靠rclone sync双向同步本地备份目录与云端排错出口看errors.cloudConflict与errors.cloudSyncFailed冲突时手动cloud upload/cloud download对齐两侧卡速度就调apps.rclone.arguments。延伸阅读docs/help/cloud-backup.md —— 官方云备份文档docs/help/configuration-file.md —— config.yaml 完整说明【免费下载链接】ludusaviBackup tool for PC game saves项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考