压缩与归档命令
压缩与归档
一、压缩解压
常用命令:tar、zip、unzip、gzip、gunzip
1、tar
(1)、命令简介
tar (Tape ARchive) 是 Linux/Unix 系统中最常用的归档工具,用于将多个文件或目录打包成一个文件(通常称为 tarball),并可配合压缩工具进行压缩。
(2)、命令选项清单
#命令语法:tar [选项] [归档文件] [文件或目录...]
#选项 说明
-c 创建新的归档文件
-x 从归档文件中提取文件
-t 列出归档文件中的内容
-v 显示详细处理信息
-f 指定归档文件名
-z 通过 gzip 压缩/解压
-j 通过 bzip2 压缩/解压
-J 通过 xz 压缩/解压
-C 解压到指定目录
-r 向归档文件追加文件
-u 仅添加比归档中更新的文件
-p 保留文件权限属性
--exclude 排除指定文件/目录
(3)、常用命令示例
创建归档文件
#基本打包
tar -cvf archive.tar file1 file2 dir1
#打包并压缩
# gzip 压缩 (通常扩展名为 .tar.gz)
tar -czvf archive.tar.gz file1 dir1
# bzip2 压缩 (通常扩展名为 .tar.bz2)
tar -cjvf archive.tar.bz2 file1 dir1
# xz 压缩 (通常扩展名为 .tar.xz)
tar -cJvf archive.tar.xz file1 dir1
查看归档内容
tar -tvf archive.tar
tar -tzvf archive.tar.gz # 查看压缩的归档
解压归档文件
#基本解压
tar -xvf archive.tar
#解压到指定目录
tar -xvf archive.tar -C /target/directory
#解压压缩的归档
# gzip 压缩的归档
tar -xzvf archive.tar.gz
# bzip2 压缩的归档
tar -xjvf archive.tar.bz2
# xz 压缩的归档
tar -xJvf archive.tar.xz
高级用法
#排除特定文件/目录tar -czvf backup.tar.gz --exclude='*.tmp' --exclude='cache/*' /path/to/dir#追加文件到已有归档
tar -rvf archive.tar newfile.txt#仅打包比归档中更新的文件tar -uvf archive.tar *#创建增量备份
# 首次完整备份
tar -g snapshot -czvf full_backup.tar.gz /data
# 后续增量备份
tar -g snapshot -czvf incremental_backup.tar.gz /data
2、zip
(1)、命令简介
zip 是一个广泛使用的跨平台压缩工具,创建的 .zip 文件在 Windows、Linux 和 macOS 上都能直接打开。相比 tar.gz,.zip 文件通常不需要额外工具即可在各种系统中解压。
安装 zip/unzip
#Linux (Debian/Ubuntu)
sudo apt-get install zip
#Linux (RHEL/CentOS)
sudo yum install zip
#macOS
brew install zip
(2)、命令选项清单
#命令语法:zip [选项] 压缩文件名.zip 文件或目录...
#选项 说明
-r 递归压缩目录(包含子目录)
-q 静默模式(不显示压缩过程)
-v 详细模式(显示压缩详情)
-m 压缩后删除原文件(相当于移动)
-f 仅更新已更改的文件
-u 更新压缩包(添加新文件或更新已有文件)
-d 从压缩包中删除指定文件
-T 测试压缩包完整性
-l 将 LF 换行符转换为 CRLF(Windows 兼容)
-ll 将 CRLF 换行符转换为 LF(Unix 兼容)-e 加密 ZIP(交互式输入密码)
-P <密码> 直接指定密码(不安全,会记录在历史中)
-0 仅存储(不压缩)
-1 最快压缩(低压缩率)
-6 默认压缩级别
-9 最高压缩率(速度最慢)
-i <模式> 仅包含匹配的文件(如 *.txt)
-x <模式> 排除匹配的文件(如 *.log)
-@ 从标准输入读取文件列表(配合 find 使用)-s <大小> 分卷压缩(如 -s 100m 每卷 100MB)
-sp 暂停分卷压缩,等待用户确认
-SFX 创建自解压 ZIP(Windows)
-z 压缩后添加注释
-F 修复损坏的 ZIP 文件
-U 保留符号链接(不跟随)
-y 保留软链接(作为链接存储)
-j 仅存储文件(不保留目录结构)
(3)、常用命令示例
压缩单个文件
zip archive.zip file.txt
压缩多个文件
zip archive.zip file1.txt file2.jpg file3.pdf
压缩整个目录(递归压缩)
zip -r archive.zip directory/
压缩目录但排除某些文件
zip -r archive.zip folder/ -x "*.log" "tmp/*"
仅压缩新文件或修改过的文件
zip -u archive.zip newfile.txt
递归压缩目录(排除 .log 文件)
zip -r archive.zip folder/ -x "*.log"
最高压缩率加密 ZIP
zip -e -9 secure.zip sensitive_data/
分卷压缩(每卷 500MB)
zip -r -s 500m split_archive.zip large_folder/
仅压缩 .txt 文件
zip archive.zip -i "*.txt"
修复损坏的 ZIP
zip -F broken.zip --out fixed.zip
3、unzip
(1)、命令简介
unzip 是用于解压 .zip 文件的命令行工具,与 zip 命令配合使用。它支持解压、查看 ZIP 文件内容、测试 ZIP 文件完整性等功能。
安装 unzip
#Linux (Debian/Ubuntu)
sudo apt install unzip
#Linux (RHEL/CentOS)
sudo yum install unzip
#macOS
brew install unzip
(2)、命令选项清单
#命令语法:unzip [选项] 压缩包.zip [文件...] [-d 目标目录]
#选项 说明
-d <目录> 解压到指定目录(如 unzip file.zip -d /target)
-o 强制覆盖已有文件(不询问)
-n 不覆盖已有文件
-j 忽略压缩包内目录结构(所有文件解压到同一目录)
-q 静默模式(不显示解压过程)
-v 显示压缩包内文件的详细信息(不解压)
-l 仅列出压缩包内文件(不解压)
-t 测试 ZIP 文件是否损坏(不解压)
-x <文件> 排除某些文件(如 unzip file.zip -x "*.log")
-P <密码> 直接指定密码(不安全,会记录在历史中)
-e(zip 命令) 加密 ZIP(交互式输入密码)
(3)、常用命令示例
解压到当前目录
unzip file.zip
解压到指定目录
unzip file.zip -d /target
强制覆盖已有文件
unzip -o file.zip
仅列出 ZIP 内容
unzip -l file.zip
测试 ZIP 是否损坏
unzip -t file.zip
解压加密 ZIP
unzip -P "password" secure.zip
排除某些文件
unzip file.zip -x "*.tmp" “logs/*”
4、gzip
(1)、命令简介
gzip (GNU zip) 是 Linux/Unix 系统中常用的文件压缩工具,采用 Lempel-Ziv (LZ77) 算法,通常生成 .gz 后缀的压缩文件。与 zip 不同,gzip 主要用于单个文件压缩,而 tar 通常配合 gzip 进行目录压缩。
安装 gzip
#大多数 Linux 发行版已预装,如需安装:
# Debian/Ubuntu
sudo apt install gzip
# RHEL/CentOS
sudo yum install gzip
# macOS (Homebrew)
brew install gzip
(2)、命令选项清单
#命令语法:gzip [选项] 文件名...
#选项 说明
-d 解压文件(等同于 gunzip)
-c 将压缩/解压结果输出到标准输出(不修改原文件)
-f 强制压缩/解压(覆盖已有文件)
-k 保留原始文件(默认会删除原文件)
-l 列出压缩文件的压缩率等信息
-r 递归压缩目录下的所有文件
-v 显示压缩/解压过程详情
-1 到 -9 压缩级别(1最快压缩,9最高压缩率,默认6)
-t 测试压缩文件完整性
(3)、常用命令示例
基本压缩
gzip file.txt # 生成 file.txt.gz,删除原文件
gzip -k file.txt # 压缩并保留原文件
gzip -v file.txt # 显示压缩详情
指定压缩级别
gzip -9 data.db # 最高压缩率(速度慢)
gzip -1 log.txt # 最快压缩(压缩率低)
解压文件
gzip -d file.txt.gz # 解压(删除 .gz 文件)
gunzip file.txt.gz # 同上
gzip -dk file.gz # 解压并保留 .gz 文件
查看压缩文件信息
gzip -l file.gz
#输出示例:
text
compressed uncompressed ratio uncompressed_name
12345 67890 81.9% file.txt
压缩多个文件
gzip file1.txt file2.txt # 每个文件单独压缩
递归压缩目录(需配合 find)
find /path/to/dir -type f -exec gzip {} \;
压缩到标准输出(不生成文件)
gzip -c file.txt > file.txt.gz
cat file.txt | gzip > file.txt.gz
测试压缩文件完整性
gzip -t file.gz
压缩后显示压缩率
gzip -v file.txt
输出:
text
file.txt: 81.9% -- replaced with file.txt.gz
解压到指定目录
gzip -dc file.gz > /path/to/newfile
批量解压当前目录所有 .gz 文件
gunzip *.gz
高压缩率 + 保留原文件
gzip -9k large_file.iso
5、gunzip
(1)、命令简介
gunzip 是 gzip 的配套解压工具,用于解压缩由 gzip 压缩的文件(扩展名通常为 .gz、.z、_z 或 .tgz)。实际上,gunzip 和 gzip -d 是完全等价的命令。
(2)、命令选项清单
#命令语法:gunzip [选项] 文件名.gz
#选项 说明
-c 将解压内容输出到标准输出(屏幕),不修改原文件
-f 强制解压,覆盖已存在的文件
-k 保留压缩文件(默认会删除.gz文件)
-l 显示压缩文件的压缩信息
-r 递归解压目录中的所有.gz文件
-t 测试压缩文件的完整性
-v 显示解压过程的详细信息
-1~-9 设置解压速度/内存使用(极少使用)
(3)、常用命令示例
基本解压
gunzip file.gz # 解压后会删除file.gz
解压并保留原压缩文件
gunzip -k file.gz
解压到标准输出
gunzip -c file.gz # 显示解压内容但不生成文件
gunzip -c file.gz > newfile # 解压到新文件
递归解压目录中的所有.gz文件
gunzip -r directory/
测试压缩文件是否完整
gunzip -t file.gz
显示压缩文件信息
gunzip -l file.gz
批量解压当前目录所有.gz文件
gunzip *.gz