完全指南:跨目录备份、迁移与多机共享)
桌面应用CLI【免费下载链接】ludusaviBackup tool for PC game saves项目地址https://gitcode.com/GitHub_Trending/lu/ludusavi点击查看免费下载导读Ludusavi 是一款跨平台、跨平台的 PC 游戏存档备份工具。本文围绕其「重定向Redirects」机制展开当存档的备份位置与原始位置不一致时如何通过配置重定向规则让备份与恢复过程自动完成路径映射。读完本文你将掌握三类重定向Backup / Restore / Bidirectional的适用场景、GUI 与配置文件中的完整配置方式以及重定向链式处理的顺序规则——包括应对链式双向重定向恢复错位的「恢复时反转顺序」选项。Redirects 是什么Ludusavi 默认在扫描到游戏存档后将文件原样写入备份目录恢复时也原样写回原路径。但现实中常出现两种情况存档原来在C:/Games后来你把整个目录迁移到了D:/Games备份里记录的还是旧路径同一份存档在多台电脑、多个用户目录之间流转路径前缀不同但内容完全一致。重定向Redirect就是为了解决这类「备份/恢复目标位置 ≠ 原始文件位置」的问题。在 docs/help/redirects.md 中Ludusavi 明确将重定向定义为使用重定向你可以把数据备份或恢复到与原始文件不同的位置。从实现上看重定向作用于每一个被扫描的存档文件在 src/scan.rs 的game_file_target函数中原始路径会依次经过所有用户配置的重定向规则通过前缀替换redirected.replace(source, target)生成最终的有效目标路径并交由后续的备份/恢复逻辑使用。在 GUI 中配置重定向重定向在 Ludusavi 图形界面中集中管理。入口位于「Other其他」页面对应 src/gui/screen.rs 的other界面操作方式是进入「Other」页面点击加号按钮添加一条新的重定向规则为这条规则填写两个字段Source源备份执行时的原始位置Target目标新的位置。界面实现位于 src/gui/editor.rs每条规则包含一个类型下拉框可选值来自RedirectKind::ALL、Source 输入框、Target 输入框、两个「选择文件夹」按钮以及删除按钮同时 Source / Target 输入框接入了撤销/重做历史RedirectHistory见 src/gui/shortcuts.rs误操作时可以回退。界面文案可在 lang/en-US.ftl 中看到field-redirects Redirects:、field-redirect-source、field-redirect-target以及类型名称redirect-bidirectional Bidirectional和选项reverse-redirects-when-restoring。三种重定向类型每条重定向都有「类型kind」决定它在备份与恢复两个阶段各自如何生效。依据 docs/help/redirects.md 与 src/resource/config.rs 中的RedirectKind枚举共有三种类型备份阶段恢复阶段典型用途Backupsource → target不生效仅在备份时把存档改写到别的路径Restore不生效source → target仅在恢复时把存档写回新路径Bidirectionalsource → targettarget → source备份与恢复方向对称适合多机共享默认类型是RestoreRedirectKind的#[default]标注以及 docs/schema/config.yaml 中kind的默认值restore均可印证。底层方向逻辑在 src/scan.rs 中一目了然let (source, target) match scan_kind { ScanKind::Backup match redirect.kind { RedirectKind::Backup | RedirectKind::Bidirectional (redirect.source, redirect.target), RedirectKind::Restore continue, // 备份阶段跳过 Restore 规则 }, ScanKind::Restore match redirect.kind { RedirectKind::Backup continue, // 恢复阶段跳过 Backup 规则 RedirectKind::Restore (redirect.source, redirect.target), RedirectKind::Bidirectional (redirect.target, redirect.source), }, };值得注意的是代码中还会跳过 Source 或 Target 为空字符串的规则redirect.source.raw().trim().is_empty()因此配置时务必保证两个字段都填写完整。两个典型应用场景场景一目录迁移后的恢复重定向假设你之前从C:/Games备份过存档随后把整个目录搬到了D:/Games。此时创建一个Restore 类型的重定向即可让旧备份恢复到新位置SourceC:/GamesTargetD:/Games恢复时备份中的C:/Games/xxx路径会被自动改写为D:/Games/xxx无需重新备份。场景二两台电脑共享同一份备份假设你在两台电脑上玩同一个游戏用户名分别是 A 和 B存档路径分别为C:/Users/A与C:/Users/B其余内容完全一致。希望两台电脑共用同一份备份时可以创建两条Bidirectional重定向电脑 ASourceC:/Users/ATargetC:/Users/main电脑 BSourceC:/Users/BTargetC:/Users/main这样两台电脑的备份都会以虚构用户 main 的路径为基准备份完全一致、可互相复用而恢复时Bidirectional 规则会把C:/Users/main重新映射回各自电脑的真实用户目录实现「统一备份、各自归位」。重定向的处理顺序Sequence重定向按列表从上到下依次处理且前一条规则产生的输出会继续参与后一条规则的处理见 docs/help/redirects.md。这正是它能够支持「链式映射」的原因。官方示例存档位于C:/Title/save.dat配置两条双向重定向C:/Title→C:/Games/TitleC:/Games→D:/Games备份时的变换链为C:/Title/save.dat → C:/Games/Title/save.dat → D:/Games/Title/save.dat在 src/scan.rs 的实现中可以看到每条规则依次执行redirected.replace(source, target)后一条规则确实作用在前一条的输出上。恢复时的顺序与「反转」选项默认情况下恢复阶段使用与备份相同的顺序。对于链式双向重定向这可能产生不符合预期的结果备份路径D:/Games/Title/save.dat已按上文链式映射恢复时若仍按原顺序执行D:/Games/Title/save.dat不会触发第一条规则因为前缀不匹配C:/Title最终只会被还原到C:/Games/Title/save.dat而不是C:/Title/save.dat。解决方案是启用「恢复时反转重定向的顺序reverse sequence of redirects when restoring」选项。勾选后恢复阶段会从列表底部向上逐条反向应用规则从而正确还原出原始路径。该选项在源码中体现为当处于恢复模式且开启反转时迭代器使用redirects.iter().rev()见 src/scan.rs。在配置文件中该选项对应restore.reverseRedirects默认值为false见 docs/schema/config.yaml 与 docs/schema/config.yamlGUI 中的开关文案是「Reverse sequence of redirects when restoring」lang/en-US.ftl。在 config.yaml 中配置重定向重定向不仅可以通过 GUI 管理也能直接写入 Ludusavi 的配置文件config.yaml其完整结构定义见 docs/schema/config.yaml 与 docs/help/configuration-file.md。顶层redirects是一个数组每个元素RedirectConfig包含三个字段docs/schema/config.yaml字段含义默认值kind重定向类型restoresource备份执行时的原始位置FilePathtarget新位置FilePathkind的合法取值为backup、restore、bidirectionalcamelCase 命名。一个完整的示例redirects: - kind: restore source: C:/Games target: D:/Games - kind: bidirectional source: C:/Users/A target: C:/Users/main - kind: bidirectional source: C:/Users/B target: C:/Users/main restore: reverseRedirects: false对应的 Rust 数据结构定义在 src/resource/config.rs其中source与target均使用StrictPath类型保存序列化时自动转为 camelCase 的redirects键名。命令行CLI模式同样会读取配置文件中的redirects与restore.reverse_redirects并传给扫描流程见 src/cli.rs。用预览验证重定向效果官方文档特别建议docs/help/redirects.md编辑重定向时先运行一次预览Preview并展开部分游戏的文件列表查看。这会直观显示每条重定向在真实执行时的映射结果避免恢复后才发现路径不对。在 CLI 输出中被重定向的文件会显示Redirected from: ...或Redirecting to: ...标记lang/en-US.ftl在 GUI 文件树中重定向前后的路径会以徽章形式标注如FROM: {path}与TO: {path}lang/en-US.ftl在 API 输出结构中若某文件被恢复到了重定向位置则originalPath记录其原始路径若被备份到了重定向位置则redirectedPath记录其在备份中的位置docs/schema/general-output.yaml。补充自动 Wine/Windows 重定向除了用户手动配置的规则Ludusavi 还内置了一种自动生成的跨平台路径映射scan.redirectWine选项默认false见 docs/schema/config.yaml。开启后扫描过程中会基于源环境的元数据semantic::Wine见 src/scan/layout.rs生成「尽力而为」的 Windows/Wine 路径重定向用于在 LinuxWine/Proton与 Windows 之间迁移存档。它与用户手动配置的重定向相互独立在 src/scan.rs 中只有用户规则没有改变路径时才会尝试生成这类语义级恢复重定向。最佳实践小结方向要对只影响备份用Backup只影响恢复用Restore备份/恢复对称且希望多机共享时用Bidirectional顺序即优先级规则按从上到下依次叠加链式映射时务必把「更通用的前缀」放在后面如C:/Title → C:/Games/Title之后才是C:/Games → D:/Games恢复场景考虑反转若配置了多条链式 Bidirectional 重定向恢复时建议勾选「恢复时反转顺序」并在预览中确认最终落点先预览后执行每次改动后都用 Preview 展开文件列表核对路径映射再执行真实备份或恢复字段不能留空源码实现会跳过 Source / Target 为空的规则避免无效配置干扰后续规则。重定向是 Ludusavi 处理「存档路径漂移」的核心手段配合预览机制与 CLI/配置文件支持可以安全地覆盖目录迁移、跨用户共享、跨系统恢复等常见备份运维场景。相关底层实现可继续查阅 src/scan.rs、src/resource/config.rs 与 docs/schema/config.yaml。赞分享桌面应用CLI【免费下载链接】ludusaviBackup tool for PC game saves项目地址https://gitcode.com/GitHub_Trending/lu/ludusavi点击查看免费下载相关推荐RetroArch存档目录迁移从默认路径到自定义存储的完整指南RetroArch存档目录迁移从默认路径到自定义存储的完整指南 存档管理痛点与解决方案 你是否曾因RetroArch默认存档路径分散而困扰当游戏ROM库日益游戏开发跨平台音视频Ludusavi跨平台游戏存档备份终极指南Ludusavi跨平台游戏存档备份终极指南 想要告别游戏进度丢失的烦恼吗Ludusavi 正是您需要的解决方案这款开源游戏存档备份工具支持 Windows桌面应用CLISunshine 游戏串流服务器免费开源从安装到 4K 调参的完整入门Sunshine 游戏串流服务器免费开源从安装到 4K 调参的完整入门 周五晚上你窝在沙发上想接着打书房那台电脑里的游戏不想回房间。 Sunshine音视频后端上一篇抖音无水印下载终极指南douyin-downloader 让你的视频收藏更简单下一篇OWASP MASTG 实战Android 用户界面组件中的敏感数据掩码与防泄漏检测指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考