- 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 的修改