小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-06-13 / 19 阅读
0
0

Linux 解压/压缩 gzip bzip2 tar命令详解

打包/压缩简介

在Linux系统中,打包和压缩是两个相关但不完全相同的操作,它们常被一起使用来管理文件和节省存储空间。下面是它们的主要区别:

打包(归档)

  • 目的:打包,也称为归档,主要是将多个文件和目录整合到一个单一的文件中,以便于存储、传输或备份。这一步骤不会减少文件的总大小,而是提供了一种组织和管理文件的便捷方式。
  • 作用:保持文件的目录结构,便于恢复原始文件布局。
  • 常用命令tar是最常用的打包工具,它可以创建 .tar文件,这个文件是一个未压缩的归档文件,包含了所有指定的文件和目录。

压缩

  • 目的:压缩则是通过特定的算法处理文件,减少文件的大小,使之占用更少的磁盘空间或在网络上传输更快。
  • 作用:通过查找并替换文件中的重复数据模式,使用更短的代码表示,从而减小文件尺寸。压缩可以是有损的(如音频、图像文件压缩,可能会牺牲一定质量换取更小的文件大小),但在大多数Linux应用场景中,使用的是无损压缩,确保数据完整性。
  • 常用命令:常用的压缩工具包括 gzipbzip2xz等,分别生成 .gz.bz2.xz等压缩文件。此外,还有跨平台的 zip命令。

结合使用

  • 在实际应用中,经常先使用 tar命令打包文件和目录,然后使用压缩工具进一步压缩打包后的文件,例如使用 gzip创建 .tar.gz(或简写为 .tgz)文件,或使用 bzip2创建 .tar.bz2文件。
  • 例如,tar -czvf archive_name.tar.gz directory_to_compress/ 命令会先打包 directory_to_compress/目录下的所有内容,然后使用 gzip进行压缩,生成名为 archive_name.tar.gz的压缩包。

总之,打包专注于组织文件,而压缩则专注于减小文件大小。两者结合使用,可以高效地管理和存储数据。

打包后压缩是压缩.tar文件本身还是所有文件?

打包后压缩,通常是压缩打包生成的 .tar文件本身,而不是再次单独压缩每一个文件。当你使用 tar命令配合 gzipbzip2xz等压缩工具时,操作流程大致如下:

  1. 打包阶段:首先,tar命令会将指定的文件和目录集合到一个单一的 .tar文件中。这个 .tar文件是一个未压缩的归档文件,它包含并保持了所有被打包文件和目录的结构及权限信息。
  2. 压缩阶段:紧接着,通过管道或者直接指定压缩选项,.tar文件作为一个整体被传递给压缩工具(如 gzipbzip2xz)。压缩工具接收这个 .tar文件作为输入,对其进行压缩处理,并在压缩完成后删除未压缩的 .tar文件(除非你特别保留了它),生成一个压缩过的归档文件,如 .tar.gz.tar.bz2.tar.xz

因此,最终得到的压缩文件(如 archive.tar.gz)是整个 .tar归档文件压缩后的结果,而不是归档内各个文件单独压缩的结果。这样做的好处是,你可以一次性解压并提取出所有内容,而不需要逐个处理每个文件。

详解Linux gzip命令

Linux gzip 命令是一个广泛使用的压缩工具,用于减小文件的大小,从而节省存储空间和加速文件在网络上的传输。gzip 使用的是 Deflate 算法,这是一种结合了 LZ77 编码和哈夫曼编码的无损数据压缩算法。以下是 gzip 命令的详细说明和一些常用选项:

基本语法


gzip [选项] 文件名

常用选项

  • -c, --stdout, --to-stdout

    将压缩(或解压缩)的结果输出到标准输出(屏幕或管道),而不是直接写入文件。原文件不会被删除。

  • -d, --decompress, --uncompress

    解压缩模式,将 .gz 文件解压回原始格式。

  • -f, --force

    强制覆盖已存在的目标文件,即使目标文件没有设置写权限。

  • -l, --list

    列出压缩文件的信息,包括原始文件大小、压缩后的大小、压缩比和文件名。

  • -r, --recursive

    递归处理,查找指定目录下的所有文件并进行压缩或解压缩。

  • -t, --test

    测试压缩文件的完整性,检查文件是否损坏。

  • -v, --verbose

    显示正在处理的文件名和压缩比等详细信息。

  • -num

    指定压缩级别,范围从 -1(最快压缩,最低压缩比)到 -9(最慢压缩,最高压缩比),默认为 -6

  • -S suffix

    指定压缩文件的后缀,代替默认的 .gz

注意事项

  • gzip 命令主要用于压缩单个文件,压缩后会删除原文件,只保留压缩后的 .gz 文件。如果要保留原文件,需要使用 -c 选项或将文件复制后再压缩。
  • 要压缩目录,通常先使用 tar 命令创建一个归档文件,然后再用 gzip 压缩这个归档文件,例如 tar -czvf archive.tar.gz directory/
  • 解压时,可以直接使用 gunzipgzip -d 命令,或者使用 zcat 查看压缩文件的内容而不实际解压到磁盘。

示例

  1. 压缩文件

    
    gzip file.txt
    
    

    这将会压缩 file.txt 并生成 file.txt.gz,同时删除原文件 file.txt

  2. 解压缩文件

    
    gunzip file.txt.gz
    
    

    
    gzip -d file.txt.gz
    
    

    这两个命令都会将 file.txt.gz 解压回 file.txt

  3. 查看压缩文件内容

    
    zcat file.txt.gz
    
    

这将在不解压的情况下显示 file.txt.gz 的内容。

通过组合这些选项,gzip 提供了灵活的方式来管理文件的压缩和解压缩需求。

Linux bzip2详解

bzip2 是 Linux 系统中另一个流行的文件压缩工具,它提供了比 gzip 更高的压缩比,但压缩和解压缩速度相对较慢。bzip2 使用 Burrows-Wheeler 变换(BWT)算法结合 Huffman 编码进行数据压缩,适用于需要高压缩率的场景。下面是关于 bzip2 命令的详细说明和常用选项:

基本语法


bzip2 [选项] 文件名

常用选项

  • -z, --compress

    进行压缩操作。这是默认操作,所以通常不需要指定。

  • -d, --decompress, --uncompress

    进行解压缩操作,将 .bz2 文件恢复为原始文件。

  • -k, --keep

    保留原文件,压缩时不删除原始文件。

  • -f, --force

    强制覆盖已存在的输出文件。

  • -t, --test

    测试压缩文件的完整性,不进行压缩或解压缩。

  • -v, --verbose

    详细模式,显示处理的文件名和压缩百分比。

  • -1 ... -9

    设置压缩级别,级别越高压缩比越大但处理时间越长。默认级别为 6

特殊用法

  • 标准输入/输出

    如果没有指定文件名,bzip2 会从标准输入读取数据并压缩到标准输出。这使得 bzip2 可以在管道中使用。

  • 符号链接 bunzip2

    bunzip2 实际上是 bzip2 的符号链接,执行 bunzip2 相当于执行 bzip2 -d。它用于解压缩 .bz2 文件。

示例

  1. 压缩文件

    
    bzip2 file.txt
    
    

    这会压缩 file.txt 成为 file.txt.bz2,默认情况下原始文件会被删除。

  2. 保留原文件压缩

    
    bzip2 -k file.txt
    
    

    压缩 file.txt 同时保留原文件。

  3. 解压缩文件

    
    bunzip2 file.txt.bz2
    
    

    
    bzip2 -d file.txt.bz2
    
    

    两者都会解压 file.txt.bz2 回到 file.txt

  4. 测试压缩文件

    
    bzip2 -t file.txt.bz2
    
    

    检查 file.txt.bz2 是否完整,不进行解压。

  5. 压缩级别调整

    
    bzip2 -9 large_file.txt
    
    

    使用最高压缩级别(-9)压缩 large_file.txt

注意事项

  • gzip 类似,bzip2 不直接支持目录压缩,若要压缩目录,通常先使用 tar 创建一个归档文件,然后用 bzip2 压缩归档文件。
  • 在性能敏感的场景下,由于 bzip2 的压缩和解压速度较慢,可能需要权衡压缩比和处理速度,考虑使用更快的压缩工具如 gzipxz

Linux tar命令详解

tar 是 Linux 系统中一个非常重要的命令行工具,用于创建、管理和提取归档文件。它的名字来源于“tape archive”(磁带归档),尽管最初设计用于备份到磁带设备,但现在广泛应用于各种存储介质。tar 不直接压缩文件,但可以与 gzipbzip2xz 等压缩工具结合使用,实现文件的打包和压缩。下面是 tar 命令的详细说明和常用选项:

基本语法


tar [选项] [文件或目录...]


tar [选项] [-f 归档文件] [文件或目录...]

常用选项

  • -c, --create

    创建新的归档文件。

  • -x, --extract, --get

    从归档文件中提取文件。

  • -t, --list

    列出归档文件的内容。

  • -v, --verbose

    显示详细的操作过程,如处理的文件名。

  • -f, --file=ARCHIVE

    指定归档文件名。如果使用 -c 创建新归档,需要指定此选项。

  • -z, --gzip, --ungzip

    使用 gzip 进行压缩或解压(.tar.gz.tgz 文件)。

  • -j, --bzip2, --bunzip2

    使用 bzip2 进行压缩或解压(.tar.bz2 文件)。

  • -J, --xz

    使用 xz 进行压缩或解压(.tar.xz 文件)。

  • -C, --directory=DIRECTORY

    指定解压时的目标目录。

  • -r, --append

    向已存在的归档文件末尾追加文件。

  • -u, --update

    更新归档文件中的文件,仅添加比归档中新的或修改过的文件。

  • --exclude=PATTERN

    排除符合指定模式的文件或目录。

示例

  1. 创建归档

    
    tar -cvf archive.tar dir1 file1.txt
    
    

    这将创建一个名为 archive.tar 的归档文件,包含 dir1 目录和 file1.txt 文件。

  2. 使用 gzip 压缩

    
    tar -czvf archive.tar.gz dir1 file1.txt
    
    

    创建并使用 gzip 压缩的归档文件 archive.tar.gz

  3. 解压归档

    
    tar -xvf archive.tar
    
    

    解压 archive.tar 到当前目录。

  4. 解压到指定目录

    
    tar -xzvf archive.tar.gz -C /path/to/extract/
    
    

    解压 archive.tar.gz/path/to/extract/ 目录。

  5. 查看归档内容

    
    tar -tvf archive.tar
    
    

    列出 archive.tar 中的所有文件和目录。

  6. 更新归档

    
    tar -uvf archive.tar newfile.txt
    
    

    更新 archive.tar,添加 newfile.txt 或更新已存在的同名文件。

注意事项

  • tar 不修改原文件或目录,只是创建一个归档的副本。

  • 结合压缩工具时,压缩和解压操作会自动识别相应的压缩格式。

  • 使用 -C 选项时,确保指定的目录路径是绝对路径或相对于当前工作目录的相对路径。


评论