第四章、文件归档
归档(Archiving) 指将 不再频繁使用但仍需保留的数据、文件或软件包 转移到专门的存储位置。
归档的目的如下:
- 释放主系统资源(如硬盘空间等)。
- 长期保存(满足合规性或历史记录需求)。
- 分类管理(区分活跃数据和历史数据等)。
- 方便分发(传递给其他计算机)。
归档通常使用数据压缩算法,常用的数据压缩算法按是否能够还原成原始数据大致可以分为如下两类:
- 有损压缩:压缩后内容会丢失,无法还原成原始数据,如:
.mp3、.jpg、.mp4等文件的压缩。 - 无损压缩:数据压缩后还可以还原成原始数据,如:
.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常用选项
-dgunzip)-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 下载 公共 图片 文档 桌面 模板 视频 音乐
练习:
- 将
/etc/passwd文件复制到家文件夹~。 - 查看
~/passwd文件的大小。 - 将
~/passwd文件使用 gzip 压缩,然后查看压缩后文件的大小。 - 计算文件gzip 命令对
passwd文件的压缩率(压缩率 = (压缩后文件大小 / 原始文件大小) × 100%)。 - 删除压缩后的
.gz文件。