- 7zip位于EPEL源中,如果服务器可以联网或者配置了本地EPEL源则可以直接安装
yum install p7zip p7zip-plugins -y
对于无法联网且没有配置本地EPEL源的服务器,可以通过官网下载安装包后,上传至服务器,手动安装
## 下载地址:https://sourceforge.net/projects/p7zip/files/latest/download
## 文件名: p7zip_16.02_src_all.tar.bz2
## 上传目录: /tmp/p7zip_16.02_src_all.tar.bz2
## 以下是执行安装的命令
cd /tmp/ && tar xjvf p7zip_16.02_x86_linux_bin.tar.bz2
cd p7zip_16.02 && bash install.sh
echo $?
7za --version
- 通常会默认安装至/usr/local路径下,如果需要执行安装路径,可以修改install.sh内容后进行安装
# global install
DEST_HOME=/usr/local
# for testing
# DEST_HOME=${HOME}/INSTALL/usr/local
DEST_BIN=${DEST_HOME}/bin
DEST_SHARE=${DEST_HOME}/lib/p7zip
DEST_MAN=${DEST_HOME}/man
DEST_SHARE_DOC=${DEST_HOME}/share/doc/p7zip
DEST_DIR=
[ "$1" ] && DEST_BIN="$1"
[ "$2" ] && DEST_SHARE="$2"
[ "$3" ] && DEST_MAN="$3"
[ "$4" ] && DEST_SHARE_DOC="$4"
[ "$5" ] && DEST_DIR="$5"
以下是p7zip 16.02 的官方完整中文技术文档:
p7zip 16.02 技术文档
官网:http://p7zip.sourceforge.net/
7-Zip官网:www.7-zip.org
最后更新:2025年4月21日
一、组件说明
p7zip 是 Windows 程序 7z.exe 和 7za.exe 的跨平台移植版本,包含以下核心组件:
组件 | 功能特性 |
---|---|
7z | 需插件支持(7z.so 和 Codecs/Rar.so),支持最多压缩格式 |
7za | 独立可执行文件,支持格式少于 7z(7z/LZMA/BCJ/BCJ2/GZIP/ZIP等) |
7zr | 轻量级独立可执行文件,仅支持 7z/LZMA/BCJ/BCJ2 格式 |
GUI工具 | 7zG(测试版)、7zFM(Alpha版) |
二、关键警告
⚠️ Linux/Unix 系统备份规范
-
禁止直接使用 7z 格式备份目录:
• 7-zip 不存储文件所有者/组信息
• 正确操作流程:# 备份目录 tar cf - 目录 | 7za a -si 目录.tar.7z # 恢复备份 7za x -so 目录.tar.7z | tar xf -
-
跨平台文件传输建议:
• 使用7za a 目录.7z 目录
而非-r
参数(递归可能不符合预期)
• 避免使用目录/*
(会遗漏隐藏文件如.profile
)
三、编译构建
3.1 二进制包直接使用
# 直接运行预编译二进制(已在 Debian 3、Ubuntu 14.10 验证)
./bin/7za
3.2 源码编译(多平台支持)
步骤:
- 根据操作系统选择 makefile:
cp makefile.linux_x86_asm_gcc_4 makefile.machine
- 编译指令:
make all_test # 完整编译与测试 make -j4 # 4核并行编译 make sfx # 生成自解压模块 7zCon.sfx make test_7z # 测试 7z 组件
已验证平台:
• x86/AMD64:Linux、MacOS 10.6.6、Android
• PowerPC/ARM:MacOS X 10.4、Galaxy Note 3
• 其他:Solaris、AIX、HP-UX 等(详见原文档构建章节)
四、安装部署
4.1 标准安装
# 方法1:使用安装脚本(需root权限)
sudo ./install.sh# 方法2:手动部署
cp bin/7za /usr/local/bin/
cp -r Codecs /usr/local/lib/7z/
4.2 插件与SFX支持
• 插件部署:需将 7z.so
和 Codecs
目录置于相同路径
• 自解压模块:复制 7zCon.sfx
到 7za/7z 所在目录
五、使用指南
5.1 基础命令
7za t 归档.7z # 测试归档完整性
7za l 归档.7z # 列出归档内容
7za x 归档.7z # 解压到当前目录
7za a 归档.7z 文件1 文件N # 创建归档
5.2 高级参数
参数 | 功能 |
---|---|
-p密码 | 设置归档密码 |
-mhe=on | 启用归档头加密(仅7z格式) |
-m0=lzma2 | 使用 LZMA2 压缩算法 |
-mx=9 | 最高压缩级别(Ultra) |
示例:
7za a -m0=lzma2 -mx=9 -md=32m -mfb=64 归档.7z 目录
六、性能优化
6.1 基准测试
7za b # 标准LZMA测试
7za b "-mm=*" # 测试所有压缩方法
6.2 大页内存配置(Linux)
# 配置大页内存
echo 296 > /proc/sys/vm/nr_hugepages
mount -t hugetlbfs none /hugepages# 启用大页支持
export HUGETLB_PATH=/hugepages
7za -slp a 大文件.7z 大文件.tar
七、许可与限制
7.1 许可证
• 核心代码:GNU LGPL
• AES/RAR插件:附加许可证限制(详见 DOC/License.txt)
7.2 已知限制
类型 | 说明 |
---|---|
文件权限 | 不保留 tar 格式的 UID/GID |
编码支持 | 需系统环境为 UTF-8 正确处理 Unicode 文件名 |
Windows特性 | 无事件对象和 WaitForMultipleObject 等效实现 |
八、开发者资源
8.1 代码分析工具
make cppcheck # 静态分析
scan-build make all4 # Clang 分析
make -f makefile.linux_valgrind test # 动态内存检测
8.2 调试支持
• 环境变量:HUGETLB_PATH
用于大页内存路径指定
• 编译标记:FIXME
标注待完善代码,FIXED
标注已适配 Unix 的修改