You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解压含绝对路径的ZIP压缩包?解决跳过不安全条目问题

解决FreeBSD下带绝对路径ZIP文件的解压问题

在FreeBSD 13.2的默认/usr/bin/unzip中,遇到带前导绝对路径的ZIP文件时,会因安全限制触发unzip: skipping insecure entry错误。以下是两种可行的解决方法:

方法一:使用bsdtar(推荐)

FreeBSD系统默认自带bsdtar,它支持处理ZIP格式,并且可以像tar一样通过参数移除前导路径:

bsdtar -xf highlight.zip --strip-components=1

这条命令会将所有文件的前导/去掉,以相对路径解压到当前目录,同时保留原有的子目录结构(比如/es/core.js会变成es/core.js)。

方法二:通过循环手动处理路径(适用于必须使用unzip的场景)

如果需要坚持使用unzip,可以通过脚本循环提取每个文件,手动去除前导路径:

unzip -l -qq highlight.zip | awk 'NR>3 {print $4}' | while read -r abs_path; do
  rel_path="${abs_path#/}"
  # 创建目标目录(如果不存在)
  mkdir -p "$(dirname "$rel_path")"
  # 提取文件内容到相对路径
  unzip -p highlight.zip "$abs_path" > "$rel_path"
done
  • unzip -l -qq:静默列出ZIP内的文件,仅输出路径
  • awk 'NR>3':跳过列表的前3行表头内容
  • ${abs_path#/}:移除路径开头的/,得到相对路径
  • mkdir -p:确保目标文件的父目录存在
  • unzip -p:将文件内容输出到标准输出,再重定向到目标文件

内容的提问来源于stack exchange,提问作者user9645

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:22:46