【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

Linux的“边角料”与“冷知识”——文件归档与压缩

2次阅读
没有评论

Linux系统中,文件/目录归档和压缩是两个不同但又经常被一起使用的概念,它们的工作原理和作用完全不同,本文将帮助你建立文件归档和压缩的定义、用途,厘清常用但易混淆的Linux小知识。

什么是文件归档

归档,Archiving,是把多个文件或目录打包成合并成一个整体,通常称为tarball,占用硬盘的总空间不变。它通常保留了文件的结构、权限、属主和时间戳等Meta元数据。

归档的目的是方便存储、备份和传输,它并不在意文件大小,文件归档前和归档后的大小几乎不变。

Linux系统中典型的归档工具是 tar(Tape Archiver的缩写)。

什么是文件压缩

压缩,Compression,是通过不同算法来减少文件占用的硬盘空间,压缩后的文件因算法不同会自动形成不同的文件后缀名,如.tar.gz、.tar.bz2、.tar.xz、.tar.zst、.zip、.rar、7z等等。

压缩的目的是为了节省存储空间和加快文件传输,节省传输时间,它并不关心和保留文件的元数据。

值得注意的是,Linux系统中常用的压缩工具一般只能压缩单个文件流,这也是为什么在需要压缩多个文件或目录时一般会联合tar归档工具一起使用的底层原因。

Linux系统中典型的压缩工具是gzip、bzip2、xz,其他常见的压缩工具还有7zip、rar、Zstandard(zstd)等(需要手动安装)。

tar命令详解

大多数使用场景都是对多个文件/目录进行批量操作,这需要先进行文件归档,再进行文件压缩。

一个典型的文件归档压缩处理逻辑是:

c(创建)→ j(bzip2压缩)→ v(显示详情)→ f(指定文件名)

tar命令实现:
tar -czvf file.tar.gz /path/to/files

tar命令核心选项有:

-c,–create 创建,创建新的归档文件;

-x,–extract 提取,解压/解包归档文件;

-t,–list 列表,查看归档文件中的内容列表;

-r,–append 追加,向已存在的归档文件末尾添加文件;

-u,–update 更新,只追加比归档中更新的文件;  # 类似替换的效果

-d,–diff 比较,比较归档与文件系统中的差异。

压缩算法选项:

-z,–gzip  通过gzip压缩,自动生成.tar.gz或.tgz后缀文件;

-j,–bzip2 通过bzip2压缩,自动生成.tar.bz2或.tbz2后缀文件;

-J,–xz 通过xz压缩,自动生成.tar.xz后缀文件;

–lzma 通过LZMA压缩,自动生成.tar.lzma后缀文件;

–zstd 通过Zstandard压缩,自动生成.tar.zst后缀文件。

其他常见辅助选项:

-v,–verbose 详细输出,显示正在处理的文件列表;

-f,–file 文件,制定归档文件名(选项后必须紧跟文件名);

-C,–directory 目录,切换到指定目录进行操作;  #指定解压目录等

-p,–permissions 保留权限,保留原始文件权限属性;

-P,–absolute-names 绝对路径,保留文件名前的绝对路径;  #慎用

–exclude 排除,排除指定文件或目录。

归档压缩联合使用

  1. 对指定目录下所有文件进行归档压缩:
    tar -czvf file.tar.gz /path/to/files  #czvf=create+gzip+verbose+file
  2. 对压缩文件进行解压解包:
    tar -xzvf file.tar.gz [-C /target/to/unzips]  #xzvf=extract+gzip+verbose+file -C 指定解压到什么路径
  3. 查看归档文件内文件列表信息:
    tar -tf file.tar.gz  #tf=list+file,只查看内容,不解压

扩展

一个有趣的现象,不知道你发现没有:

按照逻辑顺序,在对一个压缩包进行解压解包操作时,理论上应该是先解压 -z,后解包 -x,但为什么常规写法是tar -xzvf 而不是tar -zxvf呢?

这里面涉及到几条的Unix哲学思想:一是单一职责原则,tar工具专注于归档(打包/解包/查看包内容),gzip专注于压缩/解压;二是接口一致性原则,Unix推崇“以工具为主语,以核心功能为第一参数”,tar命令的核心功能放在第一位,让人一眼就知道“执行这条命令的目的是什么”。

所以,基于以上原则,假如gzip命令也支持文件归档(打包/解包),那么在使用gzip命令时,推荐的gzip命令选项使用顺序应当是:

# 以工具为主语,以核心功能为第一参数
gzip -解压 -tar解包 -显示详情 -文件 file.tar.gz
而 tar 推荐的选项顺序是:
tar -解包 -gzip压缩 -显示详情 -文件 file.tar.gz
正文完
 
itylq
版权声明:本站原创文章,由 itylq 2026-02-21发表,共计1921字。
转载说明:本站文章遵循CC-4.0国际许可协议,转载请注明出处(格式如“来源:IT摇篮曲www.itylq.com")。
评论(没有评论)
验证码