第四章、文件归档

归档(Archiving) 指将 不再频繁使用但仍需保留的数据、文件或软件包 转移到专门的存储位置。

归档的目的如下:

  1. 释放主系统资源(如硬盘空间等)。
  2. 长期保存(满足合规性或历史记录需求)。
  3. 分类管理(区分活跃数据和历史数据等)。
  4. 方便分发(传递给其他计算机)。

归档通常使用数据压缩算法,常用的数据压缩算法按是否能够还原成原始数据大致可以分为如下两类:

  1. 有损压缩:压缩后内容会丢失,无法还原成原始数据,如:.mp3.jpg.mp4 等文件的压缩。
  2. 无损压缩:数据压缩后还可以还原成原始数据,如:.png.zip.gz.xz等文件的压缩。

本章我们主要讲解无损压缩算法相关的命令。

Linux 下常用的归档相关的命令如下:

先来说一下数据压缩。在 Linux/UNIX 在常用的 zip 压缩有两种,一种就是 GNU 的 zip 压缩算法(文件后缀名 .gz),另一种是普通的 zip 压缩算法(文件后缀名 .zip)。两种压缩算法同为 zip 却不兼容。

GUN 是一个项目,是由 Richard Stallman 于 1983 年发起的,目标是创建一个完全自由的类 Unix 操作系统。 GNU 全称:GNU's Not Unix(GUN是递归拼写,表示“GNU 不是 Unix”)。这个项目开发了大量的工具软件,如: gcc、g++编译器,emacs编辑器以及我们这节课学的 gzip/gunzip等。

GUN zip 压缩算法相关的命令有 gzip 和 gunzip。

普通 zip 压缩算法相关的命令有 zip 和 unzip。

1. gzip/gunzip 命令

这两个命令主要适用于 GUN zip 压缩算法的压缩和解压缩的命令,通常只用于 Linux/UNIX 系统中。

gzip 和 gunzip 都只能对文件进行压缩和解压缩,不能对文件夹进行操作。gzip 用于压缩文件,gunzip 用于解压缩文件。如果需要将文件夹打包再压缩,需要结合 tar 命令一起使用。

gzip命令

作用

使用 GNU Zip 算法压缩文件(生成 .gz 文件),这个命令只能对文件进行压缩,不能对文件夹进行操作。

命令格式:

gzip [选项] 文件名

压缩后,原始文件会被替换为 文件名.gz(默认删除原文件)。

例如:

weimingze@mzstudio:~$ ls
hello.py  下载  公共  图片  文档  桌面  模板  视频  音乐
weimingze@mzstudio:~$ gzip hello.py
weimingze@mzstudio:~$ ls
hello.py.gz  下载  公共  图片  文档  桌面  模板  视频  音乐

hello.py.gz 是 压缩 hello.py 后生成的文件,原来的 hello.py 被删除了

需要注意的是对于比较小的文件压缩后文件的总体体积变大了,因此较小的单个文件没有必要压缩。

gzip常用选项

选项
说明
-d
解压文件(等同于 gunzip
-k
保留原始文件(不删除)
-v
显示压缩/解压的详细信息
-1-9
压缩级别(-1 最快,-9 最高压缩率)
-c
输出到标准输出(不修改原文件)
-t
测试压缩文件的完整性

解压缩可以使用 gzip -d 如:

weimingze@mzstudio:~$ ls
hello.py.gz  下载  公共  图片  文档  桌面  模板  视频  音乐
weimingze@mzstudio:~$ gzip -d hello.py.gz
weimingze@mzstudio:~$ ls
hello.py  下载  公共  图片  文档  桌面  模板  视频  音乐

gunzip命令

作用

对使用 gzip 命令压缩的 .gz 文件进行解压缩操作。其实此命令等同于 gzip -d 命令和参数的组合。

命令格式:

gunzip [选项] 文件名.gz

解压缩后,xxx.gz 文件的文件名 xxx 会被作为生成的文件,原文件 xxx.gz被删除。

如:

weimingze@mzstudio:~$ ls
hello.py  下载  公共  图片  文档  桌面  模板  视频  音乐
weimingze@mzstudio:~$ gzip hello.py
weimingze@mzstudio:~$ ls
hello.py.gz  下载  公共  图片  文档  桌面  模板  视频  音乐
weimingze@mzstudio:~$ gunzip hello.py.gz
weimingze@mzstudio:~$ ls
hello.py  下载  公共  图片  文档  桌面  模板  视频  音乐

练习:

  1. /etc/passwd 文件复制到家文件夹 ~
  2. 查看 ~/passwd 文件的大小。
  3. ~/passwd 文件使用 gzip 压缩,然后查看压缩后文件的大小。
  4. 计算文件gzip 命令对 passwd 文件的压缩率(压缩率 = (压缩后文件大小 / 原始文件大小) × 100%)。
  5. 删除压缩后的 .gz 文件。