非凡云 发表于 7 天前

Linux 文件打包、压缩、解压

本帖最后由 非凡云 于 2025-6-12 19:18 编辑

tar 打包
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)

压缩文件
tar -zcvf 打包的文件名.tar.gz [源文件]

# 多个文件打包
tar -zcvf houma.tar.gz houge.txt bailongma.txt

# 打包文件夹
tar -zcvf xiyou.tar.gz xiyou/
解压
# 解压到当前目录
tar -zxvf houma.tar.gz
# -C 解压到某个目录下
tar -zxvf xiyou.tar.gz -C /opt
zip/unzip 压缩
zip压缩
zip 压缩文件名.zip源文件

# 压缩文件
zip lnTest.zip lnTest.txt

# -r 压缩文件夹
zip -rnginx1.zip nginx-1.21.6
unzip解压
unzip lnTest.zip

# -d 指定解压后文件的存放目录
unzip lnTest.zip -d /opt
gzip 压缩/解压
gzip 命令是一个广泛使用的文件压缩和解压工具,它使用 Lempel-Ziv (LZ77) 算法进行无损数据压缩,压缩后的文件通常以 .gz 为扩展名。
核心功能:
[*]压缩文件: 将文件压缩成 .gz 格式,默认会删除原始文件。
[*]解压文件: 将 .gz 压缩文件解压,默认会删除压缩文件。
[*]查看压缩信息: 显示压缩文件的压缩比、未压缩大小等元数据(不解压)。
[*]测试压缩文件完整性: 检查 .gz 文件是否有错误。

基本语法:

gzip [选项] [文件 ...]
gunzip [选项] [文件.gz ...]# 或者使用 gzip -d
zcat [文件.gz ...]          # 或者使用 gzip -dc常用选项详解:

选项长选项说明
-d--decompress解压缩。相当于 gunzip 命令。
-c--stdout保留原始文件。将压缩或解压后的内容输出到标准输出(屏幕),不删除原始文件。通常与重定向 > 一起使用保存结果。
-k--keep保留原始文件。压缩或解压后保留输入文件。这是较新版本 gzip 支持的选项。
-v--verbose显示详细信息。压缩或解压时显示文件名和压缩比。
-l--list列出压缩文件信息。对每个压缩文件显示:压缩后大小、未压缩大小、压缩比、未压缩文件名。不解压文件。
-t--test测试压缩文件完整性。检查压缩文件是否有错误,但不解压数据。
-r--recursive递归处理目录。如果指定了目录,则递归压缩/解压该目录及其子目录下的所有文件(仅适用于支持递归的 gzip 版本)。注意: 它压缩目录中的单个文件,不是将整个目录打包成一个 .gz 文件!
-#设置压缩级别。# 是一个从 1 到 9 的数字:
- -1 或 --fast:最快压缩(压缩比最低)
- -9 或 --best:最慢压缩(压缩比最高)
- 默认级别是 -6(在速度和压缩率之间取得较好的平衡)。
-f--force强制执行。强制压缩/解压,即使文件有多个链接、文件已存在或从终端读取/写入数据。
-h--help显示帮助信息。
-L--license显示软件许可证信息。

重要注意事项:
[*]默认行为删除原文件: 这是 gzip 最重要的特性之一,也是新手容易出错的地方。

[*]压缩 file.txt 后:file.txt 消失,产生 file.txt.gz。
[*]解压 file.txt.gz 后:file.txt.gz 消失,产生 file.txt。
[*]使用 -c 或 -k 选项可以保留原始文件。
[*]压缩目录: gzip 本身不能直接将整个目录压缩成一个单一的 .gz 文件。它只能压缩单个文件。

[*]-r 选项压缩的是目录下的所有单个文件(每个文件变成一个单独的 .gz 文件)。
[*]要压缩整个目录结构成一个文件,需要先用 tar 打包,再用 gzip 压缩:tar -czvf archive.tar.gz directory/ (常用且推荐的方法)。
[*]解压目录: gunzip 或 gzip -d 解压由 gzip -r 产生的 .gz 文件时,会还原目录结构中的单个文件。解压由 tar 打包并用 gzip 压缩的 .tar.gz 文件时,需要使用 tar -xzvf archive.tar.gz。

常用操作示例:

基本压缩 (删除原文件):
gzip filename.txt       # 压缩 filename.txt -> filename.txt.gz (原文件消失)压缩并保留原文件 (-k 或 -c + 重定向):
gzip -k filename.txt    # 压缩成 filename.txt.gz, 同时保留 filename.txt
# 或者
gzip -c filename.txt > filename.txt.gz# 效果同上基本解压 (删除压缩文件):
gunzip filename.txt.gz# 解压成 filename.txt (filename.txt.gz 消失)
# 或者
gzip -d filename.txt.gz # 同上解压并保留压缩文件 (-k 或 -c + 重定向):
gunzip -k filename.txt.gz# 解压出 filename.txt, 同时保留 filename.txt.gz
# 或者
gzip -dc filename.txt.gz > filename.txt# 效果同上查看压缩文件信息 (-l):
gzip -l filename.txt.gz
# 输出示例:
# compressed      uncompressedratio uncompressed_name
#         85               10224.5% filename.txt测试压缩文件完整性 (-t):
gzip -t filename.txt.gz
# 如果没有错误,没有输出表示成功。如果有错误会显示错误信息。递归压缩目录下所有文件 (谨慎使用!):
gzip -r mydirectory/    # 压缩 mydirectory 及其子目录下所有文件 (每个文件单独压缩成.gz,原文件删除)递归解压目录下所有 .gz 文件:
gunzip -r mydirectory/   # 解压 mydirectory 及其子目录下所有 .gz 文件 (压缩文件删除)使用不同压缩级别:
gzip -9 bigfile.iso   # 最大压缩 (慢,压缩比高)
gzip -1 logfile.log   # 最快压缩 (快,压缩比低)不解压查看压缩文件内容 (zcat 或 gzip -dc):
zcat filename.txt.gz    # 将解压后的内容输出到屏幕
# 或者
gzip -dc filename.txt.gz
# 常用于管道处理: zcat access.log.gz | grep "error" | head压缩标准输入并输出到文件:
cat input.txt | gzip > output.gz
# 或者
gzip < input.txt > output.gz解压标准输入并输出到标准输出:
cat output.gz | gunzip
# 或者
gunzip < output.gz
# 或者
zcat output.gz与 tar 结合使用 (强烈推荐用于目录):
如前所述,gzip 处理目录不方便。tar 负责将多个文件和目录结构打包成一个 .tar 文件,然后gzip 负责压缩这个 .tar 文件。
压缩目录:
tar -czvf archive_name.tar.gz directory_to_compress/解压 .tar.gz 文件:
tar -xzvf archive_name.tar.gz




页: [1]
查看完整版本: Linux 文件打包、压缩、解压