news 2026/8/21 16:51:49

一条命令让游戏库瘦身一半:Linux下用tochd批量转CHD的完整实战手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一条命令让游戏库瘦身一半:Linux下用tochd批量转CHD的完整实战手册

一条命令让游戏库瘦身一半:Linux下用tochd批量转CHD的完整实战手册

【免费下载链接】tochdConvert game ISO and archives to CD/DVD CHD for emulation on Linux.项目地址: https://gitcode.com/gh_mirrors/to/tochd

上个月,朋友阿凯正面临一个"幸福的烦恼":他从二手市场淘来的 300 多张 PS1、PSP 游戏盘,加上网上下载的各类 7z 压缩包,已经把 2TB 移动硬盘占掉六成空间,而 RetroArch 加载 CUE 文件时还频繁报错,好几款游戏打到一半就崩溃。我推荐他试了试tochd——一个专为 Linux 设计的游戏镜像转换工具,它能把散落的 ISO、CUE+BIN、GDI 甚至压缩包,批量统一成高压缩的 CHD 格式。结果他只花了一个下午,就把整个游戏库收拾得明明白白。

先从阿凯的2TB硬盘说起:游戏库为什么会越攒越乱

阿凯的经历几乎是每个模拟器玩家的缩影。游戏资源来源五花八门:自己抓盘的 ISO、网站打包好的 CUE+BIN、Dreamcast 的 GDI 多文件格式、还有动不动就十几 GB 的 7z 压缩包。问题随之而来:

  • 文件太散:一个 CUE+BIN 游戏可能带三五个音轨文件,少拷一个就玩不了;
  • 空间浪费:ISO 原文件 700MB~4GB 起步,大量重复内容没有压缩;
  • 兼容性差:不同模拟器支持的格式不统一,换模拟器就要重新折腾;
  • 备份困难:多文件打包分享容易丢文件,云盘同步更是噩梦。

tochd 解决的正是这一整套问题,而且是自动化的。

30秒看懂tochd是什么:一句话、三个数字、一张表

一句话:tochd 是7z解压工具和 MAME 官方chdman转换器之间的"调度员",它把"解压→识别→转换→清理"四步串成一条命令。

三个数字建立认知

  • 40%~60%:转换后的 CHD 体积通常只有原镜像的一半上下;
  • 1 个:不管原来是一个 ISO 还是一整套 CUE+BIN,最后都变成一个.chd单文件;
  • 3 类:ISO、CUE+BIN、GDI 三种光盘镜像格式全覆盖,外加 7z、zip、rar、gz 等压缩包。
维度使用前使用后
文件形态ISO、CUE+BIN、GDI、7z、zip 混存清一色.chd单文件
一个游戏占几个文件最多十几个(含音轨)1 个
平均体积700MB~4GB约为原来的 40%~60%
模拟器加载部分核心需要特殊处理RetroArch、PPSSPP 原生识别
迁移备份漏拷一个文件就报废拷一个.chd即可

核心能力一览:tochd凭什么一条命令顶十步手动操作

核心能力人话解释真实效果
压缩包自动拆解发现.7z/.zip/.rar先解压到临时目录,再自动寻找内部镜像免手动解压,单任务省下 3~5 分钟人工操作
三类镜像全识别ISO、CUE+BIN、GDI 都能自动匹配正确的转换流程覆盖 PS1、PS2、PSP、Dreamcast 等主流光盘平台
多线程并行处理-p参数开启,多个文件同时转换4 线程批量转换,总耗时约为串行的三分之一
CD/DVD 智能切换-m auto按 750MB 阈值自动选择格式PSP 等非 CD 游戏兼容性显著提升

如果你想知道自己手头有哪些格式能被识别,直接运行tochd --list-formats,它会列出所有支持的类型;tochd --list-programs则会告诉你7zchdman分别装在哪里。

10分钟上手:安装到产出第一个CHD文件的最小路径

tochd 本身是单个 Python 脚本,不需要任何第三方 Python 库,唯一前提是系统里有7zchdman两个命令。

第一步:安装依赖(Arch 系为例,其他发行版用对应包管理器装7zchdman即可)

sudo pacman -S p7zip mame-tools

第二步:克隆并安装脚本

git clone https://gitcode.com/gh_mirrors/to/tochd cd tochd bash suggested_install.sh

安装脚本会自动找到一个你有写入权限的$PATH目录,把tochd.py安装成可直接执行的tochd命令。

第三步:先预演,再实转(强烈建议新手养成这个习惯)

tochd -X . # 预演模式:只列出会处理哪些文件,不真正转换 tochd -q . # 正式转换当前目录下所有可识别的镜像与压缩包

-X是 dry-run(空跑),相当于"先看看清单再动手",避免误操作。-q是安静模式,隐藏 7z 和 chdman 的刷屏输出,只保留每个任务的起止状态。几秒后,你就能看到每个任务输出的Completed:字样和对应的.chd路径——第一个成果到手。

进阶玩法:普通用户、进阶玩家、重度用户的三级跳

第一级:目录整批转换,把散落镜像收进一个文件夹

不想让 CHD 和源文件混在一起?用-d指定输出目录:

tochd -q -d ~/Games/CHD ~/Downloads

这条命令会扫描~/Downloads下所有支持的镜像与压缩包,把产出的 CHD 统一收进~/Games/CHD,源文件保持原样,方便你确认无误后再手动删除。

第二级:PSP的DVD格式、统计信息与保留原名

PPSSPP 开发者明确建议 PSP 镜像用chdman createdvd转换,而 tochd 默认走 CD 格式,所以转 PSP 游戏务必加-m dvd

tochd -qs -m dvd ~/PSP_Games/*.iso

其中-s会在结束时打印Started / Completed / Failed / Elapsed time统计信息,让你对整批任务一目了然。另外,从压缩包转出的 CHD 默认会改名对齐压缩包文件名,如果你希望保留包内文件的原名(比如版本号、汉化组信息就藏在里面),加上-R

tochd -R -q "Street Fighter 3 (Chinese Patch).7z"

第三级:stdin管道、临时目录与底层参数调校

重度用户可以把 tochd 接进自己的脚本工作流。比如用find喂文件列表、甚至配合其他工具按条件筛选:

find ~/Games -name "*.7z" | tochd -p -

单个-表示从标准输入逐行读取文件路径。再看两个能解决实际痛点的参数:

tochd --temp-dir /tmp/chd_work -p ~/Games/*.7z # 把解压临时目录挪到指定位置 tochd -H 2048 game.iso # 手动指定 chdman 的 hunk 大小

--temp-dir适合磁盘吃紧的场景——把解压中间产物放到空间更充裕的分区;-H一般用不上,但遇到特殊光盘(如某些非标准扇区)时可以覆盖 chdman 的默认值。如果你把 7z 或 chdman 装在了非标准路径,还能用--7z--chdman直接指定可执行文件。

避坑指南:新手最容易踩的6个坑与正确做法

新手常见的错误后果正确做法
PSP 游戏不指定格式直接转转换成功但 PPSSPP 不认,白忙一场统一加-m dvd,或直接用-m auto按体积自动判断
并行模式下干等进度条以为卡死了,其实只是进度条被隐藏并行时用-s看最终统计,或回到单线程模式看实时输出
kill -9强杀进程残留.tochd_开头的临时文件夹,可能占数 GBCtrl+C优雅中断;想让 Ctrl+C 停止全部任务就加-E
解压包里有多个同名 ISO重复转换、结果互相覆盖tochd 发现 CUE/GDI 时已自动忽略同目录 ISO;必要时先手动解压清理
CUE 引用了 APE 格式音频转换直接失败先把 APE 转成 WAV 再交给 tochd
文件名以-开头被当成命令行参数报错--分隔:tochd -- -weird_name.iso

调优技巧:让转换速度再快一倍的实用参数

转换速度主要卡在磁盘 IO 和 CPU 压缩。三个参数组合起来效果最明显:

  • -t NUM:配合-p使用,指定并行线程数,0表示用满全部 CPU 核心,默认 2。CPU 核心多时开满,吞吐量立竿见影;
  • -c NUM:限制每个 chdman 进程占用的核数。如果你开 8 个并行任务,每个还都吃满多核,系统会严重过载,此时用-c 1反而更快;
  • --temp-dir:把解压临时目录放到 SSD 或/tmp(内存盘)上,解压瓶颈大幅缓解。转换完临时目录会被自动清理,但如果曾经强杀过进程,记得检查并手动删除残留的.tochd_*文件夹。

推荐节奏:先用tochd -X -d 输出目录 源目录预演确认清单 → 再跑tochd -q -s -d 输出目录 -p -t 线程数 源目录正式转换 → 拿到统计后抽查几个 CHD 在模拟器里实测。

横向对比:tochd vs 手动解压+chdman

方案操作步骤每文件额外耗时出错风险自动化程度
手动方案解压 → 找镜像 → 查格式 → 敲 chdman 命令 → 清理临时文件多花 3~8 分钟人工时间命令拼错、格式选错、漏清理
自己写批处理脚本开发调试成本高,难覆盖边界情况视脚本质量而定兼容性问题多
tochd一条命令几乎为零低(有预演、跳过重复)高(解压→识别→转换→清理全自动)

再对比"干脆不转":CHD 单文件省空间、易迁移、原生兼容主流模拟器,长期看这笔转换时间是绝对划算的投资。

社区与生态:源码、文档与自助排障入口

tochd 采用 MIT 协议,整个项目核心就是一个零依赖的 Python 脚本:

  • 主程序源码:tochd.py,约 800 行,逻辑清晰,值得通读;
  • 更新日志:CHANGES.md,每个版本的功能变化和已知问题都记录在案;
  • 安装与卸载脚本:suggested_install.sh、uninstall.sh;
  • 自助查询:tochd --list-examples内置常用示例,tochd --list-formats查看支持格式,tochd --list-programs确认依赖路径,出问题先跑这三条命令基本能定位一半问题。

遇到版本升级或行为变化,先翻 CHANGES 里的"bug"条目;遇到没见过的文件格式,看--list-formats的输出,比盲目猜测快得多。

写在最后:今晚就把你的游戏库收编了

一个周末下午,300 个游戏的镜像全部变成 CHD,移动硬盘腾出一半空间,RetroArch 里所有游戏一键加载、再没报过错——这就是阿凯的故事,也可以成为你的故事。工具本身免费开源、安装只要三条命令、跑起来只需一条命令。

现在就从一句tochd -X ~/Downloads开始,看看你的游戏库有多少文件可以"收编"。今晚动手,明天你拥有的就是一个更整齐、更轻量、也更可靠的模拟器游戏库。

【免费下载链接】tochdConvert game ISO and archives to CD/DVD CHD for emulation on Linux.项目地址: https://gitcode.com/gh_mirrors/to/tochd

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 16:46:20

3秒找回忘掉的QQ号:phone2qq 手机号查QQ号免费教程

3秒找回忘掉的QQ号:phone2qq 手机号查QQ号免费教程 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 周末搬家,从纸箱底翻出一部用了三年的旧手机。QQ登不上,密码也忘了,账号里还存着毕业…

作者头像 李华