Linux 7za命令

7za 是一个高压缩比的文件归档工具,是7-Zip的命令行版本。它支持7z、ZIP、GZIP、BZIP2、TAR等多种格式,尤其以7z格式的压缩率最高。

安装7za

在大多数Linux发行版中,可以通过包管理器安装:

Ubuntu/Debian
sudo apt update
sudo apt install p7zip-full
CentOS/RHEL
sudo yum install p7zip

或使用EPEL源:

sudo yum install epel-release
sudo yum install p7zip p7zip-plugins

语法格式

7za [命令] [选项] 归档文件 [文件...]

常用参数

参数 说明
a 添加文件到压缩包(创建/更新归档)
e 解压文件到当前目录(不保持目录结构)
x 解压文件并保持完整的目录结构
l 列出压缩包内容
t 测试压缩包完整性
-t7z 指定压缩格式为7z(默认)
-tzip 指定压缩格式为ZIP
-m0=lzma2 设置压缩方法为LZMA2(默认)
-mx=9 设置压缩级别(0-9,9为最高)
-mfb=64 设置快速字节数(影响压缩速度)
-md=32m 设置字典大小(影响内存使用)
-o[目录] 指定输出目录
-p[密码] 设置密码(加密压缩包)
-r 递归处理子目录
-y 对所有询问回答"是"

使用示例

示例1:创建7z压缩包

file1.txtfile2.txt压缩为archive.7z

7za a archive.7z file1.txt file2.txt

使用最高压缩级别压缩目录:

7za a -t7z -mx=9 -mfb=64 -md=32m -ms=on archive.7z /path/to/directory/
示例2:创建加密的7z压缩包
7za a -pMyPassword -mhe=on secure.7z secret_data/

-mhe=on选项会加密压缩包的文件头,不显示内部文件名列表

示例3:解压7z文件

解压到当前目录(不保持目录结构):

7za e archive.7z

解压并保持完整目录结构:

7za x archive.7z

解压到指定目录:

7za x archive.7z -o/home/user/extracted/
示例4:列出压缩包内容
7za l archive.7z

显示详细列表信息:

7za l -slt archive.7z
示例5:添加文件到现有压缩包
7za u archive.7z newfile.txt

如果newfile.txt已经存在于压缩包中,则会更新;否则会添加新文件

实用技巧

性能优化
  • 使用-mx=9获得最高压缩比,但速度较慢
  • 使用-mx=1获得最快压缩速度,但压缩比较低
  • 调整-md参数可以控制字典大小,较大的字典需要更多内存但可能提高压缩率
安全提示
  • 使用-p参数设置密码时,密码会显示在命令行历史中
  • 更安全的方式:使用-p不带参数,命令会提示输入密码
  • 重要文件建议使用-mhe=on加密文件头
格式转换

将ZIP格式转换为7z格式以获得更高压缩率:

7za x archive.zip -o/tmp/extract/
7za a -t7z archive.7z /tmp/extract/*
批量处理

批量压缩当前目录下所有.log文件:

7za a logs.7z *.log
注意事项
  • 7za与7z命令类似,但7za是独立的可执行文件,不依赖7-Zip的动态库
  • 7z格式的压缩率很高,但压缩和解压速度相对较慢
  • 确保有足够的磁盘空间进行解压操作
  • 加密的7z文件如果忘记密码将无法恢复