Linux学习之CentOS(十九)--Linux下文件的压缩与打包

简介:

在Linux中,有很多的压缩命令。利用这些压缩命令,可以方便的从网络上下载大型的文件。同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆,会对这些命令所压缩的文件进行一些特殊的命名方式。本篇随笔将主要记录一下Linux系统常见的压缩命令。

一、压缩文件的原理

压缩技术,简而言之,我们可以将其想象成:其实文件里面有很多的"空间"存在,并不是完全填满的,而"压缩"技术就是将这些"空间"填满,从而使得整个文件占用量下降。

目前我们的操作系统数据中,都是使用字节(byte)单位来计量,不过事实上,计算机中最小的计量单位应该是位(bit),我们知道 1 byte = 8 bit。那么我们是怎么样对一些数据进行记录的呢?

例如我们只是需要记忆一个数字,即1这个数字,考虑到计算机所谓的二进制,如此一来, 1 会在最右边占据 1 个 bit ,而其他的 7 个 bits 将会自动的被填上 0 !其实在这样的例子中,那 7 个 bits 应该是 【空的】 才对!不过,为了要满足目前我们的操作系统数据的存取,所以就会将该数据转为 byte 的型态来记录。而压缩技术就是将这些没有使用到的空间"丢"出来。

文件压缩以后可以降低磁盘的使用量,减少文件的大小。不过这些"压缩过的文件"无法直接被操作系统所使用,因此,若要使用这些被压缩过的文件数据,则必须将它"还原"成未被压缩的样子,这就是"解压缩"。

二、Linux系统常见的压缩命令

在Linux的环境中,压缩文件的扩展名大多是:【*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2】,为什么会有这么多种的扩展名呢?

这是因为 Linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法互相压缩/解压缩文件。 所以,当你下载到某个压缩文件时,自然就需要知道该文件是由哪种压缩命令所制作出来的,这样才可以使用对应的压缩命令对其进行解压缩。 虽然 Linux 文件的属性基本上是与文件名没有绝对关系的, 但是为了帮助我们进行识别,所以适当的扩展名还是必要。目前Linux系统中一些常用的压缩文件的扩展名如下大致有以下几种:

**.gz        *.bz2       *.       *..gz     程序打包的文件,其中并且经过 *..bz2    程序打包的文件,其中并且经过  的压缩

接下来我们来看一下Linux系统下常见的一些压缩命令。

1.gzip、zcat

gzip 可以说是使用最广的压缩命令了!目前 gzip 可以解压 compress, zip 与 gzip 等软件所压缩的文件。 通过gzip命令所创建的压缩文件为 *.gz 的文件名。

[root@xiaoluo ~]#  [-~]# ----v  :可以显示出原文件/-#  :压缩等级(~),- 最快,但是压缩比最差、- 最慢,但是压缩比最好!默认是 -/etc/ 复制到 / /etc/  --rw-r--r--.   root    root          4月   :   -l

# 此时我们会发现我们刚才复制过来的 passwd 这个文件已经变成了 passwd.gz 这个压缩文件了

实例二:将实例一的文件内容读出来

注意:当你使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的文件名, 原始文件就不再存在了。所以如果要保留原来的文件,可以使用实例四的方法来进行压缩

我们知道,cat命令可以用来读取一个文本文件的内容,那么我们如果要来读取压缩文件数据内容要使用什么命令呢?就是上面实例的 zcat 命令了。

2.bzip2、bzcat

如果说gzip是为了取代compress命令,那么bzip2这个命令就是gzip的另一个升级版本

[root@xiaoluo ~]#  [-~]# -----v  :可以显示出原文件/-#  :与  同样的,都是在计算压缩比的参数, - 最佳, - 最快!

实例一:将刚才的passwd进行压缩

# 此时passwd已经变成了passwd.bz2文件了

实例二:将实例一的文件进行解压缩


实例三:将实例二的文件进行压缩,并保留原来的文件

使用gzip,扩展名自动为.gz。使用bzip2的话,扩展名就自动变成了.bz2.同样,如果我们需要读取bzip2压缩文件的数据内容时,使用bzcat命令即可

3.tar

这个命令我们应该见得挺多的,之前在进行解压缩时,通常都是使用这个命令

上面提到的几个命令大多仅能针对单一文件来进行压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是【将目录内的所有文件 "分别" 进行压缩】的动作! 而不像在 Windows 的系统,可以使用类似 WinRAR这一类的压缩软件来将好多数据【打包成一个文件】的样式。

这种将多个文件或目录包成一个大文件的命令功能,我们将其称为 打包命令! 那么Linux系统下有没有这样的命令呢?当然是有点,tar命令就是咱们需要的打包命令。 tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩。

[root@xiaoluo ~]#  [-j|-z] [cv] [-f 创建的文件名] filename... <==~]#  [-j|-z] [tv] [-f 创建的文件名]             <==查~]#  [-j|-z] [xv] [-f 创建的文件名] [-C 目录]   <==-c  :创建打包文件,可搭配 ---x  :解打包或解压缩的功能,可以搭配 --c, -t, --j  :通过  的支持进行压缩/解压缩:此时文件名最好为 *.-z  :通过   的支持进行压缩/解压缩:此时文件名最好为 *.-v  :在压缩/-f filename:-f 后面要立刻接要被处理的文件名!建议 ---p  :保留备份数据的原本权限与属性,常用於备份(----exclude=FILE:在压缩的过程中,不要将 FILE 打包

实例一:将这个/etc目录下的文件全部打包成 /home/etc.tar

通过上面的一些实例,可以看到tar这个命令是一个多用途的压缩命令。我们通过tar命令可以完成备份的功能。由于tar整合过后的文件我们通常取名为 *.tar,如果在打包过程中还是用了gzip的压缩属性,则将文件取名为*.tar.gz。

本篇主要记录了Linux系统下常用的文件压缩命令,在后续的学习中将继续记录学习Linux的点点滴滴!!!

本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1947762如需转载请自行联系原作者


sandshell

相关文章
|
2天前
|
算法 Linux Windows
linux中的压缩软件介绍
这些是Linux中一些常见的压缩软件工具,您可以根据需要选择合适的工具来压缩和解压缩文件。每种工具都有其特定的特点和压缩性能,因此根据具体情况选择合适的工具是重要的。
4 0
|
3天前
|
算法 Linux
Linux:文件增删 & 文件压缩指令
Linux:文件增删 & 文件压缩指令
6 0
|
4天前
|
自然语言处理 Java Linux
【Linux】开始学习进程替换吧!
通过学习进程替换,我们可以体会到多语言混搭的快乐,可以从C语言直接蹦到python ,也可以从c++里运行java代码。是不是很厉害!这是通过调度多个进程的效果,联系我们之前学习的进程,进程控制等概念。我们可以想要运行其他代码可以通过创建子进程来实现,但是这样也肯定是同一种语言,如果想要运行其他语言,那是不是有种方法可以调度一个进程来当做子进程呢??? 我们开始今天的学习吧!
10 0
|
5天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
27 4
|
6天前
|
存储 安全 Linux
linux centos7中使用 Postfix 和Dovecot搭建邮件系统
linux centos7中使用 Postfix 和Dovecot搭建邮件系统
|
6天前
|
Linux 网络安全 数据库
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
|
6天前
|
关系型数据库 MySQL Linux
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
|
12天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
11 0
|
13天前
|
编解码 Linux 数据安全/隐私保护
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
|
13天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术