centos extract兼容性测试
导读:CentOS 解压与提取兼容性测试方案 一 测试范围与准备 目标与范围 覆盖常见归档与压缩格式:tar、tar.gz/tgz、tar.bz2、tar.xz、zip、rar、.Z。 覆盖常见字符集与路径:UTF-8、GBK/GB2312;...
CentOS 解压与提取兼容性测试方案
一 测试范围与准备
- 目标与范围
- 覆盖常见归档与压缩格式:tar、tar.gz/tgz、tar.bz2、tar.xz、zip、rar、.Z。
- 覆盖常见字符集与路径:UTF-8、GBK/GB2312;包含超长路径、空格、特殊字符(如#、& );包含符号链接、硬链接、设备文件、FIFO等特殊条目。
- 覆盖多版本与架构:CentOS 7/8/Stream 9,x86_64/aarch64,以验证跨版本与跨架构行为一致性。
- 环境与工具
- 基础命令:tar、gzip、bzip2、xz、unzip、cpio、file、ls、stat、diff、sha256sum。
- 可选增强:7z/7zz(p7zip)、rar/unrar(EPEL 源)。
- 准备样本集:构造不少于10个代表性样本(含中文名、空格、超长路径、符号链接、设备文件、不同压缩比与块大小),以及已知损坏样本用于负向测试。
- 术语澄清
- Linux 没有统一的 extract 命令;常见为 tar 解包、unzip 解压 ZIP、以及从 RPM 包提取文件的用法。若你指的是 yum/dnf 的 extract 插件,见文末补充。
二 测试用例设计
| 测试项 | 样本/命令示例 | 判定标准 |
|---|---|---|
| 基础格式识别 | file sample.*;tar -tvf sample.tar;unzip -l sample.zip | file 能正确识别;tar/unzip 能列出条目且无报错 |
| 解压成功与内容一致性 | tar -xzvf s.tar.gz -C out & & sha256sum -c sha256.txt;unzip s.zip -d out | 返回码为0;提取后文件数与大小一致;校验和匹配 |
| 字符集与路径 | 含中文/空格/特殊字符的归档;tar -xvf;unzip | 条目名与内容完整无乱码;无路径穿越(如**…/**) |
| 超长路径与深层目录 | 构造深度≥100层目录的归档 | 能成功创建深层目录并提取全部文件 |
| 特殊条目 | 含 symlink/hardlink/block/char/fifo | 条目类型与链接关系保持;读取/统计行为符合预期 |
| 权限与属主 | 归档内设置 0755/0644 与 uid/gid | 提取后权限/属主与归档一致(root 可保留) |
| 时间属性 | 检查 mtime/atime/ctime | 时间与归档一致或在允许误差内 |
| 压缩算法与块大小 | 不同压缩级别/块大小的 tar.gz/tar.bz2/tar.xz | 均能正常解压;性能差异在可接受范围 |
| 体积与完整性 | 大文件(≥1 GB)与多文件(≥10k) | 无截断/损坏;校验和一致 |
| 负向与异常 | 损坏归档、截断文件、错误密码 ZIP、无权限目录 | 明确报错;不生成残缺文件;不覆盖目标文件 |
| 跨版本/跨架构 | 在 CentOS 7/8/Stream 9 与 x86_64/aarch64 交叉验证 | 行为与结果一致;无平台相关失败 |
三 自动化脚本示例
- 说明:以下脚本覆盖常见格式与关键校验,可作为最小回归套件。
#!/usr/bin/env bash
set -Eeuo pipefail
WORKDIR=$(mktemp -d)
trap 'rm -rf "$WORKDIR"' EXIT
LOG="$WORKDIR/extract-test.log"
run(){
echo "[$(date '+%F %T')] $*" | tee -a "$LOG";
"$@" >
>
"$LOG" 2>
&
1;
}
# 1) 基础识别
for f in samples/*;
do
run file "$f"
done
# 2) tar.gz / tgz
for f in samples/*.tar.gz samples/*.tgz;
do
run tar -xzvf "$f" -C "$WORKDIR/out-tgz" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
# 3) tar.bz2
for f in samples/*.tar.bz2;
do
run tar -xjvf "$f" -C "$WORKDIR/out-bz2" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
# 4) tar.xz
for f in samples/*.tar.xz;
do
run tar -xJvf "$f" -C "$WORKDIR/out-xz" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
# 5) zip
for f in samples/*.zip;
do
run unzip -o "$f" -d "$WORKDIR/out-zip" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
# 6) rar(若已安装 unrar)
if command -v unrar >
/dev/null 2>
&
1;
then
for f in samples/*.rar;
do
run unrar x -y "$f" "$WORKDIR/out-rar" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
fi
# 7) .Z(若安装了 ncompress)
if command -v uncompress >
/dev/null 2>
&
1;
then
for f in samples/*.Z;
do
run cp "$f" "$WORKDIR/out.Z" &
&
run uncompress "$WORKDIR/out.Z" &
&
run sha256sum -c "$f.sha256" 2>
/dev/null || echo "FAIL: $f"
done
fi
echo "See $LOG for details."
- 生成校验和示例:find samples -type f -exec sha256sum { } ; > samples.sha256
四 判定标准与常见问题
- 判定标准
- 功能:所有正向用例返回码为0,提取后文件数与大小一致,校验和匹配;特殊条目类型与链接关系正确;时间与权限符合预期。
- 可靠性:对损坏样本与异常输入有明确报错,不生成残缺文件,不覆盖目标文件。
- 兼容性:在不同 CentOS 版本/架构上行为一致;对UTF-8/GBK与超长路径无乱码与截断。
- 性能:大文件与多文件场景解压时间与资源占用在可接受范围(与同类工具基线相比无明显退化)。
- 常见问题与处理
- 文件名编码问题:确保环境为 UTF-8;必要时在生成端统一转码,避免跨平台乱码。
- 缺少解压工具:安装 unzip、p7zip、unrar(EPEL 源);RHEL/CentOS 7 可用 yum,8/Stream 9 用 dnf。
- 权限与属主:非 root 可能无法保留 uid/gid;以普通用户验证时以权限位为准。
- 路径穿越与安全检查:避免使用 -P/–absolute-names;必要时在解压前校验条目路径安全性。
- 旧系统维护状态:CentOS 7 已于 2024-06-30 结束官方支持,建议迁移至 CentOS Stream 9 或其他 RHEL 兼容发行版以获得安全更新与工具链改进。
五 若指的是 yum extract 插件
- 检查与安装
- 确认插件:rpm -q yum-plugins-core;安装:sudo yum install -y yum-plugins-core。
- 查看日志:tail -f /var/log/yum.log;测试提取:sudo yum extract < package_name> -C /tmp/pkg-extract。
- 验证要点
- 目标目录是否生成 usr/bin、usr/lib 等层级;文件权限/属主是否合理;与 rpm2cpio 提取结果是否一致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos extract兼容性测试
本文地址: https://pptw.com/jishu/781109.html
