SOP — Synopsys 2018 介质裁剪(删除不装介质)¶
变更日期:2026-09-29 执行主机:本机(宿主,
192.168.31.249,Ubuntu 24.04.3) 类别:C 类(删除,不可逆)
1. 背景¶
2018 批次工具安装完成后,介质目录 synopsys2018/ 仍保留全部原始介质(35G),其中一部分从未安装:
- 旧版本包:
ppower_vO-2018.06、icc2_vO-2018.06—— 已被实际安装的 SP3 / SP1 取代; - 未安装产品:
vcs_vO-2018.09-SP2(装的是 vcs-mx N-2017.12-SP2)、ic_compiler_vO-2018.06-SP1(装的是 icc2)、vc-vip_vO-2018.09、galaxy_docs_2018.06.tar.gz、bash配置.zip。
宿主 / 分区(介质所在盘,/dev/sda3)已用 172G / 220G,仅剩 37G(83%),有回收需求。
2026-09-28 曾决定暂不裁剪;2026-09-29 用户决定直接删除,范围限定为「旧版 + 未装产品」,保留 synopsysinstaller_v5.0.rar(installer 唯一真源,config 中锁定 sha256)。
2. 目标¶
- 删除 7 个条目、合计约 11.75G,介质目录缩至约 23G;
/分区可用空间提升至约 49G;- 幂等:复跑零变更、全跳过;
- 删除留档:记录被删条目的完整文件清单(相对路径 / 字节数 / mtime)。
3. 前置条件¶
- 介质根:
/home/rain/Documents/eda_tools_ins/Synopsys/synopsys2018(属主rain,脚本以 rain 身份执行即可,无需 root); - 判定依据:
synopsys_install_2018/config/synopsys_install_clean.yaml的products段(18 个产品目录 = 已装介质); - 脚本:
cleanup_media.py(同目录),白名单硬编码 7 项; - 不需停服、不涉及任何已安装工具树(
/data/nfs/tools不动)。
4. 影响范围¶
| 项 | 说明 |
|---|---|
| 涉及主机 | 仅宿主本机;六台 work 节点与 31.28 无任何改动 |
| 涉及路径 | /home/rain/Documents/eda_tools_ins/Synopsys/synopsys2018/ 下 7 个条目 |
| 是否停服 | 否;不影响 license 服务、调度器、已装工具树 |
| 在跑作业 | 与介质目录无关,删除不影响 |
| 不可逆性 | 无备份、不可逆;如需重装被删产品,须回原下载源重新获取介质 |
| 窗口期 | 无特殊要求(删除耗时秒级) |
5. 分步操作¶
步骤 1:反查「未被安装配置引用」的条目¶
从安装配置里取出已安装产品的介质目录名,与介质目录实际条目对照,差集即裁剪候选。
cd /home/rain/Documents/eda_tools_ins/Synopsys
grep -oP 'dir:\s*\K[^\s},]+' synopsys_install_2018/config/synopsys_install_clean.yaml | sort -u > /tmp/snps_installed.txt
ls synopsys2018 | sort > /tmp/snps_media.txt
comm -13 /tmp/snps_installed.txt /tmp/snps_media.txt
预期:输出 8 项(含 synopsysinstaller_v5.0.rar)。
坑:installer_rar 不在 products 段(它是 media 段的来源锁定项),会被差集误列入,必须人工剔除——本工程把它写进「保留」清单,不进白名单。
实现体:cleanup_media.py(步骤 collect() 汇总体积)。
步骤 2:预演(dry-run)¶
python3 synopsys_media_trim_20260929/cleanup_media.py
预期:7 行 PLAN,合计 11.75G,并生成 record/media_removed_<时间戳>.txt(此时标注 [PLANNED])。
坑:留档文件名的时间戳精确到秒,同秒内重复执行会覆盖同名留档(本次复跑即发生,已用预演档转换补正)。复跑前先确认时间戳不同,或备份留档。
步骤 3:执行删除(高危)¶
python3 synopsys_media_trim_20260929/cleanup_media.py --apply
脚本对每个条目:解析路径后校验其父目录等于介质根(拒符号链接逃逸)→ 名字命中白名单 → 收集清单写入留档 → shutil.rmtree / unlink。
预期:7 行 HIGH-RISK DELETE,汇总「已删除 7 项,跳过 0 项,合计 11.75G」。
等价的手工命令(仅供参考,不承担幂等与校验,高危):
cd /home/rain/Documents/eda_tools_ins/Synopsys/synopsys2018 # 高危:确认当前目录正确
rm -rf vc-vip_vO-2018.09 ppower_vO-2018.06 icc2_vO-2018.06 vcs_vO-2018.09-SP2 \
ic_compiler_vO-2018.06-SP1 galaxy_docs_2018.06.tar.gz bash配置.zip
步骤 4:幂等复跑¶
python3 synopsys_media_trim_20260929/cleanup_media.py --apply
预期:7 行 SKIP ...(不存在,幂等跳过),汇总「已删除 0 项,跳过 7 项,合计 0.00G」,退出码 0。
6. 验证¶
| 判据 | 命令 | 实测结果 |
|---|---|---|
| 空间释放 | df -h / |
37G → 49G(+12G) |
| 介质目录缩容 | du -sh synopsys2018 |
35G → 23G |
| 保留项仍在 | ls synopsys2018 |
19 个条目,synopsysinstaller_v5.0.rar 在列 |
| 幂等 | 步骤 4 | 7 项全跳过、零变更 |
| 留档存在 | ls synopsys_media_trim_20260929/record/ |
预演档 + 权威档各 1 份 |
| 已装工具不受影响 | 抽查 /tools/synopsys/... 可读 |
未触碰安装树 |
7. 回滚¶
- 无文件级备份:删除即不可恢复,本 SOP 不含回滚步骤(属用户明确接受的不可逆操作);
- 恢复途径:从原下载源重新获取对应介质(
vc-vip/vcs 2018.09/ic_compiler/galaxy_docs等),或使用保留的synopsysinstaller_v5.0.rar+ 已装介质重装; - 备份与留档位置:本目录
backup/README.md(登记「无 .bak,仅清单留档」及留档文件位置)。
8. 风险说明¶
| 风险 | 缓解 |
|---|---|
| 误删已装介质导致无法重装 | 白名单硬编码 7 项 + 路径父目录校验;删除前 dry-run 人工核对;installer rar 与 18 个已装目录不在白名单 |
| 删除不可逆,事后发现需要某产品 | 属用户 2026-09-29 明确决策;留档记录被删内容,便于日后按名重新获取 |
| 留档文件被同秒复跑覆盖 | 已发现并补正;复跑时确认时间戳不同(见步骤 2 的坑) |
| 通配删除误伤 | 脚本不使用通配;手工等价命令亦逐名列出 |
附录:交付物清单¶
| 文件 | 说明 |
|---|---|
cleanup_media.py |
清理实现体:白名单校验、dry-run/apply、幂等、留档 |
record/media_removed_20260929-011030.txt |
预演档([PLANNED],含完整文件清单) |
record/media_removed_20260929-011034.txt |
权威删除档(由预演档转换,[DELETED]) |
backup/README.md |
备份/留档台账 |
docs/SOP.md(本文件) |
本次变更档案 |
来源:
/home/rain/Documents/eda_tools_ins/Synopsys/synopsys_media_trim_20260929/docs/SOP.md| 最后更新:2026-09-29 01:16(由build/sync.py同步,请勿在站点侧修改)