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系统中一些常用的压缩文件的扩展名如下大致有以下几种:

*.Z         compress 程序压缩的文件;  //在当前的Linux主流版本中都已经默认没有支持该压缩命令了,因为gzip命令已经取代了compress命令了
*.gz        gzip程序压缩的文件;

*.bz2       bzip2程序压缩的文件;

*.tar       tar程序打包的数据,并没有压缩过;

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

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

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

1.gzip、zcat

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

[[email protected] ~]# gzip [-cdtv#] 文件名

[[email protected] ~]# zcat文件名.gz

选项与参数:

-c  :将压缩的数据输出到屏幕上,可通过过数据流重导向来处理;

-d  :解压缩的参数;

-t  :可以用来检验一个压缩文件的一致性,看看文件有无错误;

-v  :可以显示出原文件/压缩文件的压缩比等信息;

-#  :压缩等级(1~9),-1最快,但是压缩比最差、-9最慢,但是压缩比最好!默认是 -6  

-d或--decompress或----uncompress  解开压缩文件。

-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose  显示指令执行过程。

#gzip -rv test6递归的压缩目录

实例一:将 /etc/passwd复制到/home 目录下,并且以gzip进行压缩

[[email protected]]# cp /etc/passwdpasswd

[[email protected]]# ls -l

-rw-r--r--.  1 root    root        2679 4月  2619:37passwd

[[email protected]]# gzippasswd

[[email protected]]# ls -l
-rw-r--r--.  1 root   root         1066 4月  26 19:37passwd.gz
# 此时我们会发现我们刚才复制过来的 passwd 这个文件已经变成了 passwd.gz 这个压缩文件了

实例二:将实例一的文件内容读出来
[[email protected] home]# zcatpasswd.gz
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
....................................此处省略N个字......................................
#此时我们可以看到 passwd.gz 解压缩之后的文件内容

实例三:将实例一的文件进行解压缩
[[email protected] home]# gzip-d passwd.gz
[[email protected] home]# ls -l
-rw-r--r--.  1 root   root         2679 4月  26 19:37passwd
#此时我们可以看到,刚才的passwd.gz 文件又被解压缩成了passwd这个文件了

实例四:将实例三解压缩的passwd文件用最佳压缩包进行压缩,并保留原来的文件
[[email protected] home]# gzip-c9 passwd > passwd.gz
[[email protected] home]# ls -l passwd*
-rw-r--r--. 1 root root 2679 4月  26 19:37 passwd
-rw-r--r--. 1 root root 1066 4月  26 19:52 passwd.gz

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

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

2.bzip2、bzcat

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

[[email protected] ~]# bzip2 [-cdkzv#] 文件名

[[email protected] ~]# bzcat文件名.bz2

选项与参数:

-c  :将压缩的过程产生的数据输出到屏幕上

-d  :解压缩的参数

-k  :保留原始文件,而不会删除原始的文件

-z  :压缩的参数

-v  :可以显示出原文件/压缩文件的压缩比等信息;

-#  :与 gzip同样的,都是在计算压缩比的参数, -9最佳, -1最快!

实例一:将刚才的passwd进行压缩
[[email protected] home]# bzip2-z passwd
[[email protected] home]# ls -l passwd*
-rw-r--r--. 1 root root 1102 4月  26 19:37 passwd.bz2
# 此时passwd已经变成了passwd.bz2文件了

实例二:将实例一的文件进行解压缩
[[email protected] home]# bzip2-d passwd.bz2
[[email protected] home]# ls -l passwd*
-rw-r--r--. 1 root root 2679 4月  26 19:37 passwd

实例三:将实例二的文件进行压缩,并保留原来的文件
[[email protected] home]# bzip2-zk passwd
[[email protected] home]# ls -l passwd*
-rw-r--r--. 1 root root 2679 4月  26 19:37 passwd
-rw-r--r--. 1 root root 1102 4月  26 19:37 passwd.bz2
# -k这个参数就可以保留原文件  或者使用 bzip2 -c passwd> passwd.bz2 这个命令也可以

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

3.tar

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

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

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

[[email protected] ~]# tar [-j|-z] [cv] [-f 创建的文件名] filename... <==打包与压缩

[[email protected] ~]# tar [-j|-z] [tv] [-f 创建的文件名]             <==查看文件名

[[email protected] ~]# tar [-j|-z] [xv] [-f 创建的文件名] [-C 目录]  <==解压缩

选项与参数:

-c  :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)

-t  :查看tarfile里的文件
-x  :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开

特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。

-j  :通过 bzip2的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2

-z  :通过 gzip  的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz

-v  :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项

-C 目录   :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

-p  :保留备份数据的原本权限与属性,常用於备份(-c)重要的配置文件
-P  :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

--exclude=FILE:在压缩的过程中,不要将 FILE 打包

实例一:将这个/etc目录下的文件全部打包成/home/etc.tar
[[email protected] home]# tar-cvf etc.tar /etc -->> 这个命令只是用来打包,不进行压缩

[[email protected] home]# tar-zcvf etc.tar /etc -->> 打包以后,使用gzip 对其进行压缩
[[email protected] home]# tar-jcvf etc.tar /etc-->> 打包以后,使用bzip2 对其进行压缩
# 特别注意,在参数 f 之后的档案档名是自己取的,我们习惯上都用 .tar 来作为标识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file
# 如果加 j 参数,则以 .tar.bz2 来作为扩展名

实例二:查看上述etc.tar 文件里有哪些内容
[[email protected] ~]# tar-ztvf etc.tar
# 由于我们使用 gzip 压缩,所以要查阅该 tarfile 内的文件时,
# 就得要加上 z 这个参数

实例三:将etc.tar 文件解压缩到当前目录下
[[email protected] home]# tar -zxvf etc.tar
# 此时我们可以发现当前目录下已经有了一个etc的文件夹,里面就是我们解压缩出来的文件

实例四:如果我只是希望将 etc.tar 中的 etc/passwd 解压出来
[[email protected] home]# tar-zxvf etc.tar etc/passwd
# 我可以通过 tar -ztvf 来查阅 tarfile 内的文件名,如果单只要一个文件,
# 就可以通过这个方式来完成。注意到! etc.tar.gz 内的根目录 / 不见了

实例五:备份/etc 内的所有文件,并且保存其权限
[[email protected] home]# tar-zxvpf etc.tar.gz /etc/
# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时

实例六:在/home 中,比2013/04/01 新的文件就进行备份
[[email protected] home]# tar -N ‘2013/04/01‘ -zcvf home.tar /home

实例七:我要备份/home,/etc的所有文件,但是不要备份/home/xiaoluo 这个目录下的文件
[[email protected] home]# tar --exclude /home/xiaoluo -zcvf myfile.tar.gz /home/*/etc

例如:将文件全部打包成tar包

#tar -cvf log.tar log2012.log    仅打包,不压缩!

#tar –zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩

#tar –zcvf log.tar.bz2 log2012.log  打包后,以 bzip2 压缩

例如:将tar 包解压缩

#tar -zxvf /opt/soft/test/log.tar.gz解压

# tar -xzf apr-1.4.6.tar.gz -C/usr/src解压指定到/usr/src目录

时间: 2024-10-17 16:55:19

linux文件压缩的相关文章

Linux文件压缩与解压缩

什么是压缩文件?原理是什么? 简单的说,就是经过压缩软件压缩文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少, 例如有000000,可以把它变成6个0的写法60来减少该文件的空间,同理解压缩就是按照相同的原则把数据还原回来. Linux环境中有哪些格式的压缩文件? 常见的压缩文件有*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,为啥有这么多种压缩文件?这是因为Linux支持的压缩命令非常多, 且不同的命令所用的压缩技术并不相同,当然彼此之前可能就

Linux文件压缩和解压缩命令

Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如:命令    参数 包名   要打包的文件路径 tar     cvf  zzj.tar  /ect/zzj/  /ect/ko tar     xvf  zzj.tar(解开文件包) tar     xvfz  zzj.tar.gz(解压成原来压缩的文件) tar     cvfz  zzj.tar

Linux文件压缩和打包(gzip、bip2、xz工具)

常见压缩格式 Windows:.rar..zip..7z Linux  :.zip..gz..bz2..xz..tar..gz..tar.bz2..tar.xz gzip压缩工具 用来压缩文件(常用) gzip 1.txt                                  压缩 1.txt gzip -d 1.txt.gz               解压 1.txt.gz gzip -c 1.txt > /tmp/1.txt.gz     压缩文件且不删除原有文件 gzip -

Linux文件压缩和打包(上)

6.1压缩打包介绍 6.2gzip压缩工具 6.3bzip2压缩工具 6.4xz压缩工具 文件压缩后的大小不能更具压缩工具来定论,他的大小是根据文件的内容和压缩工具一起定论的. 6.1压缩打包介绍 我们平时在网上下载文件一般都是压缩的,压缩会使我们的文件空间缩小.压缩文件我们在网上传输的时间也会有所减少,带宽资源也会减少.说到带宽其实我们家庭使用的带宽和公司使用的不是一样的,家庭使用的下载速度和上传速度不对等,而公司的是对等的.所以公司的宽带比较贵.如果我们服务器上的文件经常被下载我们就要对文件

【Linux学习笔记】第6章 Linux文件压缩和打包

6.1压缩打包介绍Windows压缩:.rar,.zip,.7zLinux压缩:.zip,.gz,.bz2,.xz,.tar.gz,.tar.bz2,.tar.xz 6.2gzip压缩工具gzip FILENAME 压缩文件,格式gz,压缩后源文件消失.gzip -d FILENAME.gz 解压文件.gzip -[1-9] FILENAME.gz 压缩文件时指定压缩级别,1最轻,9最狠.gunzip FILENAME.gz 也可以解压.file FILENAME 可以查看文件的信息.zcat

Linux文件压缩和解压使用记录

一:tar(可压缩可解压) tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户.但是tar本身只是一个文件打包工具,只有和其他工具组合时才具有压缩/解压文件功能. 使用tar命令压缩文件的格式是:tar  参数[主选项+辅选项]   '文件或目录 ' 参数主选项 -c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项. -r 把要存档的文件追加到档案文件的未尾.例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘

Linux 文件压缩

压缩工具   compress/uncompress:对应 .Z 结尾的压缩格式文件  压缩格式:gz.bz2.xz.zip.Z gzip??压缩文件并删除源文件(生成.gz的文件) gunzip?解压缩文件(gzip -d有相同的功能) bzip2   压缩文件(压缩比例比gzip更高后缀为.bz2) bunzip2 解压缩文件(bzip -d有相同的功能) ??压缩算法不同,压缩比也会不同gzip  gzip /PATH/TO/SOMEFILE?压缩完成后会删除原文件 -d?解压缩 -#?指

本地上传文件至服务器的技巧(linux文件压缩及解压文件)

linux(ubuntu)文件解压及压缩文件 ubuntu支持文件的解压及压缩功能, 如果ubuntu上面没有安装过unzip工具的话,可以通过下面命令安装: sudo apt-get install unzip zip压缩文件夹,文件及解压文件的命令 1.压缩文件夹 zip -r 目标文件名.zip 要压缩的文件夹 2.把文件 unzip 文件 目的地 把/home目录下面的mydata.zip解压到mydatabak目录里面 3.把文件解压到当前目录 unzip 要解压的文件 其他的详细请查

Linux文件压缩和打包

常见压缩文件 . windows  .rar .zip .7z . Linux .zip, .gz, .bz2, .xz, .tar.gz, .tar.bz2, .tar.xz gzip压缩工具(不能压缩目录) gzip filename  #压缩后原文件会消失,生成filename.gz gzip -d filename.gz 或 unzip filename.gz   #压缩过的文件会消失,生成filename gzip -# filename  //#:1-9,默认6 gzip -c fi