Linux文件压缩与解压实用方法
Linux文件压缩分为两类:打包工具(将多个文件/目录合并为单个归档文件,不压缩)和压缩工具(通过算法减小文件体积)。实际使用中,tar(打包工具)常与gzip/bzip2/xz(压缩工具)结合,形成.tar.gz(快速压缩)、.tar.bz2(高压缩率)、.tar.xz(极致压缩)等格式;而zip是跨平台通用格式(兼容Windows),rar则需额外安装工具。
tar是Linux最核心的归档工具,通过-z(gzip)、-j(bzip2)、-J(xz)参数实现压缩,-c(创建)、-x(解压)、-f(指定文件名)是核心参数。
tar -czvf archive.tar.gz file1.txt dir1/(-z启用gzip,-v显示进度)tar -cjvf archive.tar.bz2 file1.txt dir1/(-j启用bzip2,压缩率高于gzip但速度慢)tar -cJvf archive.tar.xz file1.txt dir1/(-J启用xz,压缩率最高但耗时最长)tar -xzvf archive.tar.gz(-x解压,-z指定gzip格式)tar -xjvf archive.tar.bz2(-j指定bzip2格式)tar -xJvf archive.tar.xz(-J指定xz格式)tar -tf archive.tar.gztar -xzvf archive.tar.gz -C /opt/target/(-C指定目标目录)tar -czvf archive.tar.gz dir1/ --exclude='*.tmp' --exclude='.git'(--exclude排除指定文件/目录)gzip适用于单个文件的快速压缩(压缩率中等,速度快),压缩后会删除原文件。
gzip file.txt(生成file.txt.gz)gunzip file.txt.gz(生成file.txt)gzip -c file.txt > file.txt.gz(-c输出到标准输出,重定向到新文件)gunzip -c file.txt.gz > file.txt(解压后保留原压缩文件)zip格式兼容Windows、Mac等系统,是Linux下最常用的跨平台压缩工具。
zip -r archive.zip file1.txt dir1/(-r递归压缩目录)unzip archive.zip(解压到当前目录)unzip archive.zip -d ~/projects/(-d指定目标目录)unzip -l archive.zip(-l仅列出内容)unzip -O GBK 中文文件.zip(-O指定编码,如GBK、UTF-8)bzip2压缩率高于gzip,但速度较慢,适合长期存储的大文件(如日志、备份)。
bzip2 file.txt(生成file.txt.bz2,原文件删除)bunzip2 file.txt.bz2(生成file.txt)bzip2 -k file.txt(-k保留原文件)bunzip2 -k file.txt.bz2(-k保留压缩文件)xz压缩率最高(优于bzip2),但速度最慢,适合对空间要求极高的场景(如发行版镜像)。
xz -z file.txt(生成file.txt.xz,原文件删除)unxz file.txt.xz(生成file.txt)xz -zk file.txt(-k保留原文件)使用for循环遍历所有.zip文件并解压:
for z in *.zip; do unzip "$z"; done
("$z"加引号避免文件名含空格时报错)
若解压时出现中文乱码,指定编码格式(如GBK):
unzip -O GBK 中文文件.zip
(需系统支持对应编码,可通过locale -a查看可用编码)
对于超过存储设备容量的大文件,可使用split命令分割后压缩,解压时合并:
tar -czvf - large_file.iso | split -b 10G - large_file.tar.gz.(生成large_file.tar.gz.aa、large_file.tar.gz.ab等分卷)cat large_file.tar.gz.* | tar -xzvf -(cat合并分卷,tar解压)使用zip的-e参数添加密码,或tar结合gpg加密:
zip -r -e sensitive.zip /path/to/sensitive_data(交互式输入密码)tar czvf - /path/to/data | gpg --symmetric --cipher-algo AES256 -o data.tar.gz.gpg(生成加密文件,需输入密码)tar -tf(tar包)、unzip -l(zip包)查看内容,避免误解压。-C(tar)或-d(unzip)避免文件散落在当前目录。-k参数(如gzip -k、bzip2 -k),防止原文件丢失。zip格式(兼容Windows),内部使用.tar.gz(平衡速度与压缩率)。