跳转至

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. 目标

  1. 删除 7 个条目、合计约 11.75G,介质目录缩至约 23G;
  2. / 分区可用空间提升至约 49G;
  3. 幂等:复跑零变更、全跳过;
  4. 删除留档:记录被删条目的完整文件清单(相对路径 / 字节数 / 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 同步,请勿在站点侧修改)