找回密码
 立即注册
查看: 46|回复: 0

Linux 文件打包、压缩、解压

[复制链接]

79

主题

161

回帖

1449

积分

超级版主

积分
1449
发表于 2025-6-12 19:14:02 | 显示全部楼层 |阅读模式
本帖最后由 非凡云 于 2025-6-12 19:18 编辑

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

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

  4. # 打包文件夹
  5. tar -zcvf xiyou.tar.gz xiyou/
复制代码
解压
  1. # 解压到当前目录
  2. tar -zxvf houma.tar.gz
  3. # -C 解压到某个目录下
  4. tar -zxvf xiyou.tar.gz -C /opt
复制代码
zip/unzip 压缩
zip压缩
  1. zip 压缩文件名.zip  源文件

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

  4. # -r 压缩文件夹
  5. zip -r  nginx1.zip nginx-1.21.6
复制代码
unzip解压
  1. unzip lnTest.zip

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


基本语法:

  1. gzip [选项] [文件 ...]
  2. gunzip [选项] [文件.gz ...]  # 或者使用 gzip -d
  3. zcat [文件.gz ...]          # 或者使用 gzip -dc
复制代码
常用选项详解:
[td]
选项
长选项
说明
-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。


常用操作示例:

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





非凡云致力于提供高品质、高性价比的云服务产品
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|非凡云交流社区 ( 蜀ICP备2023029164号-2 )

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表