打包(归档)和压缩(包含两者的区别)

在讲解具体的归档命令和压缩命令之前,先来了解一下归档和压缩所各自代表的含义。

归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。

通常,归档总是会和系统(数据)备份联系在一起,不过,有关数据备份的内容,留到后续章节讲,本章仅学习归档命令的基本使用。

和归档文件类似,压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小。

压缩是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了 "C语言中文网",那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。

由于计算机处理的信息是以二进制的形式表示的,因此,压缩软件就是把二进制信息中相同的字符串以特殊字符标记,只要通过合理的数学计算,文件的体积就能够被大大压缩。把一个或者多个文件用压缩软件进行压缩,形成一个文件压缩包,既可以节省存储空间,有方便在网络上传送。

如果你能够理解文件压缩的基本原理,那么很容易就能想到,对文件进行压缩,很可能损坏文件中的内容,因此,压缩又可以分为有损压缩无损压缩。无损压缩很好理解,指的是压缩数据必须准确无误;有损压缩指的是即便丢失个别的数据,对文件也不会造成太大的影响。有损压缩广泛应用于动画、声音和图像文件中,典型代表就是影碟文件格式 mpeg、音乐文件格式 mp3 以及图像文件格式 jpg。

采用压缩工具对文件进行压缩,生成的文件称为压缩包,该文件的体积通常只有原文件的一半甚至更小。需要注意的是,压缩包中的数据无法直接使用,使用前需要利用压缩工具将文件数据还原,此过程又称解压缩

Linux 下,常用归档命令有 2 个,分别是 tar 和 dd(相对而言,tar 的使用更为广泛);常用的压缩命令有很多,比如 gzip、zip、bzip2 等。这些命令的详细用法,后续文件会做一一介绍。

注意,tar 命令也可以作为压缩命令,也很常用。


推荐文章
Django中间件

中间件是一个插件系统,嵌入在Django的Request和Response之间执行,可以对输入和输出内容作出修改,它是处理所有请求与响应的通用框架组件。 1.Django默认自带中间件 中间件本质上

smtp是什么邮件的协议?

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠

Telnet协议是什么?

Telnet协议是Internet远程登录服务的标准协议和主要方式,它为用户提供了在本地计算机上远程管理主机的能力。 使用者在自己的电脑上使用Telnet程序连接到服务器,然后在Telnet程序中输

Go语言将秒转换为具体的时间

在本例中,使用一个数值表示时间中的“秒”值,然后使用resolveTime()函数将传入的秒数转换为天、小时和分钟等时间单位。 【示例】将秒解析为时间单位: packagemain imp

Hibernate悲观锁(pessimistic lock)实例详解

悲观锁(pessimisticlock)是指在每次操作数据时,总是悲观地认为会有其他事务操作同一数据,因此,在整个数据处理过程中,会把数据处于锁定状态。 悲观锁具有排他性,一般由数据库实现。在锁定时

获取域名的WHOIS信息

注册商的WHOIS服务器往往保留了域名更详细的WHOIS信息。netwox工具提供了编号196的模块,它可以从指定的WHOIS服务器获取域名WHOIS信息。 【实例】已知域名kali.org注册商的

setDateHeader(Stringname,longdate) name:header的名称。 date:要设置的long类型的数值。 示例

Java Lambda表达式

Lambda表达式(Lambdaexpression)是一个匿名函数,基于数学中的λ演算得名,也可称为闭包(Closure)。现在很多语言都支持Lambda表达式,如C++、C#、Java、Pytho

PHP file():把整个文件读入一个数组中

file()函数也是读取整个文件的内容,与前面介绍的《readfile()函数》不同的是,file()函数会将文件的内容按行存放到数组中(包括换行符在内)。如果成功则返回这个数组,失败则返回FALSE

office2010 32位和64位的区别是什么?

office201032位和64位的区别1、兼容性不同:一般情况下,需要选择安装32位版本的MicrosoftOffice,因为它可与大多数其他应用程序,尤其是第三方加载项兼容。而64位版本的Micr

c语言中“||”是什么意思?

在c语言中,“||”的意思:或;表示逻辑操作符(或)。它的操作数是布尔型,即只有“0”(false)和“1”(true)两个数值。C语言规定,在逻辑运算中,所有非0的数值都被看做1处理。一般用法是:i

word中怎么使用格式刷?

word中格式刷的使用1、打开word文档,输入文字,设置字体大小和颜色。2、选中有格式样式的文本,单击“格式刷”按钮,按住鼠标左键进行一次格式刷操作,格式刷消失。3、双击“格式刷”按钮后,可以连续使

desktop.ini是什么文件?

desktop.ini在正常情况下是系统可识别的一个配置文件,作用是存储用户对文件夹的个性设置;比如用户更改了文件夹图标、背景颜色等等,其配置信息都会存入到desktop.ini文件中。用户可以使用记

C语言指针的声明

指针(pointer)是对数据对象或函数的一种引用。指针有多种用途,例如定义“传址调用”函数,它还可以实现动态数据结构,例如链表和树。 通常,管理大量数据的有效方法不是直接处理数据本身,而是使用指向

getRequestURI() 示例 JSP

最新Web前端开发面试题及参考答案

1、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?(1)、声明位于文档中的最前面,处于标签之前。告知浏览器的解析器,用什么文档类型规范来解析这个文档。(2)、严格模式的排版和JS运作模

Go语言map的多键索引——多个数值条件可以同时查询

在大多数的编程语言中,映射容器的键必须以单一值存在。这种映射方法经常被用在诸如信息检索上,如根据通讯簿的名字进行检索。但随着查询条件越来越复杂,检索也会变得越发困难。下面例子中涉及通讯簿的结构,结构如

Python缩进规则(一看即懂)

通常来说,一条Python语句应在一行内写完,但如果语句很长,可以使用反斜杠\来实现多行语句,例如: s="我正在写\ 一本关于Python的书" print(\ s) 需要注意的是,在成

字符编码是怎么回事?

在计算机中我们所处理的字符信息,即文本信息(包括数字、字母、文字、标点符号等)是以一种特定编码格式来定义的。为了使世界各国的文本信息能够通用,就需要对字符编码做标准化。 我们现在最常用也最基本的字符

C++ STL是什么,有什么用?

在已有C++尤其是C++模板的基础上,从本节开始,我们开始系统地学习STL标准模板库,首先来了解什么是STL,以及学习STL有什么用? STL,英文全称standardtemplatelibrary