必须安装p7zip-full才能解压.7z文件,因其含LZMA2等关键编解码器;Ubuntu/Debian用sudo apt install p7zip-full,CentOS/RHEL用yum或dnf,Arch直接pacman -S p7zip;验证用7z --help | head -n 3;解压务必用x而非e以保留目录结构,分卷从.001开始,密码用-ppass,图形界面需配套工具,备份恢复应结合tar保权限。

没装p7zip-full就别想解压.7z
直接运行 7z x file.7z 报 command not found 或 7z: command not found,说明系统根本没装支持 7z 的工具。Linux 发行版默认不带 p7zip-full,只装 p7zip(精简版)也不行——它缺 LZMA2 等关键编解码器,解压时会报 Unsupported compression method。
- Ubuntu/Debian:
sudo apt update && sudo apt install p7zip-full - CentOS/RHEL 7:
sudo yum install epel-release && sudo yum install p7zip-full - CentOS 8+/Fedora:
sudo dnf install p7zip-full - Arch/Manjaro:
sudo pacman -S p7zip(注意:Arch 的p7zip包等价于其他发行版的p7zip-full)
装完验证:7z --help | head -n 3 能输出版本信息(如 7-Zip [64] 21.07)才算到位。
用 x 而不是 e 解压,否则目录结构全乱
7z e file.7z 会把所有文件平铺到当前目录,哪怕压缩包里是 src/main/java/Hello.java,也会直接丢进当前目录,极易覆盖同名文件;而 7z x file.7z 才真正还原原始路径。
- 解压到当前目录:
7z x archive.7z - 解压到指定目录(比如
/tmp/out):7z x archive.7z -o/tmp/out(注意:-o和路径间**不能有空格**) - 解压带密码的包(密码
pass123):7z x archive.7z -ppass123 - 只解压其中几个文件或子目录:
7z x archive.7z path/to/file.txt docs/ -o/tmp/extracted
别用 e,除非你明确需要扁平化提取且已确认无重名风险。
分卷 7z 文件(.7z.001、.7z.002…)必须从 .001 开始解压
分卷压缩后生成的是 archive.7z.001、archive.7z.002 等,但你**只需指定第一个分卷**:7z x archive.7z.001。7z 会自动识别并加载后续分卷。
- 确保所有分卷都在同一目录下,名字不能改(尤其是序号和扩展名)
- 如果提示
Cannot open encrypted archive. Wrong password?,即使密码没错,也可能是某个分卷损坏或缺失 - 不要尝试单独解压
.002或.003—— 它们不是独立存档
分卷文件对磁盘空间敏感,解压前请确认目标路径有足够空间容纳全部内容(7z 不做流式解压,会先解到内存或临时区)。
别拿 7z 当系统备份工具,权限会丢
7z 本身不保存 Linux 文件的属主(owner)、用户组(group)、ACL、SELinux 上下文等元数据。直接 7z x backup.7z 恢复后,所有文件都归当前用户所有,执行权限也可能丢失。
- 正确做法:先
tar -cf - /etc /home | 7z a -si backup.tar.7z(打包再压缩) - 恢复时:
7z x -so backup.tar.7z | tar xf -(解压流再解包) - 图形界面双击打开?GNOME 需
file-roller+p7zip-full;KDE 需ark+ 插件——但命令行仍是唯一可靠方式
权限和路径结构是两件事:前者靠 tar 保,后者靠 7z x 保。混用时顺序不能错,漏一步就可能让服务起不来。


















