Linux下压缩文件(compressed file)和存档文件(archive file)之间的区别和命令

本文的写作对象是linux入门人员。如果您是linux大拿或者根本没有接触过linux,请跳过忽略。

存档文件(archive file)和压缩文件(compressed file)间的区别:

存档文件是一个文件和目录的集合,而这个集合被贮存在一个文件中。存档文件没有经过压缩,它所使用的磁盘空间是其中所有文件和目录所占空间的总和。

压缩文件也是一个文件和目录的集合,且这个集合也被贮存在一个文件中,但是,它的贮存方式使其所占用的磁盘空间比其中所有文件和目录的总和要少。

结论:存档文件不是压缩文件,但是压缩文件可以是存档文件。压缩文件使用磁盘空间较少。

一、在 Linux 下压缩的指令相当的多,在 Linux下常用的文件压缩指令有:

(compress、 gzip、bzip2、和 zip)等压缩文件的后缀名

*.Z compress 程序压缩的文件档案;用uncompress 解压或者compress -d (在Unix系统中较常用)

*.zip 用zip 压缩的文件档案;使用 unzip 来解压

*.bz2 bzip2 程序压缩的文件档案;使用 bunzip2 来解压

*.gz gzip 程序压缩的文件档案;使用 gunzip 来解压

*.tar.gz 用 gzip 压缩的 tar 程序打包的文件; (tar命令中已经包含gzip的功能)

*.cpio.gz 用 gzip 压缩的 cpio 程序打包的文件;

*.tbz 用 bzip2 压缩的 tar 程序打包的文件;

*.tar.bz2 用 bzip2 压缩的 tar 程序打包的文件;

二、在 Linux 下使用的文件目录打包归档指令有:

*.tar tar 程序打包的数据,并没有压缩只是归档文件(archive file);

*.cpio 将指定文件或目录打包

tar打包速度比cpio慢,且不能跨越两份存储媒体,但是文件格式几乎在所有的类Unix系统中都通用。

cpio则由于可通过管道功能,使得其打包时的文件选择、排除功能非常强,且能跨越多份媒体,并能备份特殊的系统文件。

三、压缩指令的简单语法(要获得有关命令的详细使用信息,在 shell 提示下键入 man 命令来查看详细说明书页。):

1.compress 和 uncompress用法:

压缩:

#compress filename

解压:

方法一

#compress -d filename.Z

方法二

#uncompress filename.Z

方法三

#gzip filename.Z

注意:使用 compress 命令压缩文件之后,如果没有带其它的参数,那么原文件就会被后来的 *.Z 压缩文件所覆盖!

2.zip 和 unzip

压缩:

#zip filename.zip filename

把filename压缩为filename.zip 。

-r 参数指定压缩包括所有在 filesdir 目录中的文件。

解压:

#unzip filename.zip filesdir

filesdir为你要解压到的目录路径目录

zip 命令同时处理多个文件和目录:

zip -r filename.zip file1 file2 file3 /usr/Jack/jackq.com

方法是将它们一一列出,并用空格间隔:上面的命令把多个文件和目录的内容压缩后放入 filename.zip 文件。

3.bzip2 和bunzip2

压缩:

# bzip2 -z filename

解压:

#bzip2 –d filename.bz2

filename.bz2 文件会被删除,而继之以 filename。

使用 bzip2 命令同时处理多个文件和目录:

bzip2 filename.bz2 file1 file2 file3 /usr/jackq/jackq.com

4.gzip 和 gunzip

压缩:

#gzip filename

文件即会被压缩,并被保存为 filename.gz。

解压:

#gunzip filename.gz

filename.gz文件会被删除, filename

使用 gzip 命令同时处理多个文件和目录:

gzip -r filename.gz file1 file2 file3 /usr/jack/jackq.com

将目录或者文件一一列出,并用空格间隔,上面的命令把多个文件和目录压缩后放入 filename.gz 文件。

5. *.tar.gz 、*.tbz、 *.tar.bz2 文件

注意:tar 默认不压缩文件。

1.创建.tbz文件,使用tar的 -j 选项:

#tar -cjvf filename.tbz file

3.创建.tgz 文件,使用tar -z 选项:

#tar -czvf filename.tgz file

2.解压 .tbz、 .tgz 文件

#tar -xjvf filename.tbz

如果你使用 bunzip2 命令来给 filename.tbz 文件解压,filename.tbz 文件会被删除,并被替换为 filename.tar。

#tar -xzvf filename.tgz

如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar。

(bzip2, gzip在没有加入特殊参数的时,原先的档案会被新的档案取代掉)

四、归档或打包文件命令的简单语法(要获得有关命令的详细使用信息,在 shell 提示下使用man 命令来查看详细说明):

1.tar (tar 文件是几个文件和(或)目录在一个文件中的集合。是创建备份和归档的推荐选择。)

创建tar文件:

#tar -cvf filename.tar /directory1 /directory2 file3 file4

以上命令是把目录/directory1 /directory2内的所有文件和文件file3 file4都放入当前目录中的新文件 filename.tar 里。

例子(来自鸟哥私房菜的范例):

# tar -cvf directory.tar directory

只将目录整合打包成一个档案

# tar -zcvf directory.tar.gz directory

除了将目录打包外,同时以 gzip 压缩

# tar -zcvf filename.tar.gz /home/test/*

将 /home/test/ 这个目录下的档案全部打包并压缩成为一个 filename.tar.gz 的档案

#tar -xvf directory.tar

解 tar 的封包,请注意,由于没有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否则会显示有问题!

# tar -zxvf directory.tar.gz

这个就是有加上 gzip 的压缩的结果!所以需要加上 –z !

#tar –ztvf directory.tar.gz

这个 t 可以用来查看 tar 里面的档案信息呢!而不需要将他解开!

# tar -zcvPf home.tar.gz /home

则建立起来的压缩档内档案为绝对路径

请注意,使用这个 P 的参数时,不要将 P 加在 f 后面,因为

f 之后要立即接档名才行!

# tar -N ‘2010/01/27′ -zcvf home.tar.gz /home

上面是说 在 /home 这个目录中,比 2010/01/27 日还要新的档案才会被打包进入 home.tar.gz 这个档案中!

# tar -zcvf host.tar.gz / –exclude /mnt –exclude /proc

上面是说,将根目录的所有数据都打包进 host.tar.gz 这个档案中,但是 /mnt 及 /proc 则不打包!

抽取 tar 文件:

#tar -xvf filename.tar

tar 常用用的选项参数有:

-c — 创建一个新归档。

-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项一起使用时,则解除该选项指定的归档。

在 f 之后要立即接文件名!f后不要再加参数!

-t — 显示包括在 tar 文件中的文件列表。

-v — 显示文件的归档进度。

-x — 从归档中抽取文件。

-z — 使用 gzip 来压缩 tar 文件。

-j — 使用 bzip2 来压缩 tar 文件。

2.cpio归档文件的打包和抽取 :

A.含子目录打包:

#find /usr/lib -print cpio -o〉/usr/linux_jack.cpio

若通过-o选项来打包整个目录下的所有文件与子目录,常先利用find目录名-print来找出所有文件与子目录的名称,通过管道传给cpio打包。

B.不含子目录的打包:

#ls /usr/lib cpio -o〉/usr/linux_jack.cpio

C.特定文件打包:

可利用文本搜索命令grep与管道配合,可以排除或选择特定类型的文件传给cpio打包。

#ls /usr/lib/*.c cpio -o〉/usr/linux_jack.cpio

#ls /usr/lib grep ′\.c$′ cpio -o〉/usr/linux_jack.cpio

意思均为找出/usr/lib目录下以.c结尾的文件予以打包。可充分利用的管道和其他命令的强大功能来实现指定文件的打包。

抽取归档文件:

#

cpio -idmv < xxx.cpio

3.解压cpio.gz 文件

方法一:

zcat linux_jack.cpio.gz | cpio –idmv

方法二 :

第一步:

gunzip linux_jack1.cpio.gz

gunzip linux_jack2.cpio.gz

第二步:

cpio -idmv < linux_jack1.cpio

cpio -idmv < linux_jack2.cpio

PS:

bzip2 压缩工具为您提供了最大限度的压缩比。

gzip bzip2 压缩工具可以在多数类似 UNIX 的操作系统上找到。

zip文件方便在Linux 和其它操作系统如MS Windows间传输,基本上支持所有的操作系统。

任何时候假如忘记命令的具体参数,可在 shell 提示下使用man 命令来查看详细说明。

bzip2, gzip,compress 在没有加入特殊参数的时,原先的档案会被新的档案取代掉,但是 tar 则原来的与后来的文件档案都会存在。建议使用tar。

声明: 本站遵循 知识共享署名-非商业协议CC2.5 共享协议. 转载请注明转自 杰趣网志
保存本页为PDF文档

没有评论 您有什么意见?

欢迎您在本站发表您的意见或见解!求提高!