Linux文件压缩工具有:gzip、bzip2、rar、7zip、lbzip2、xz、lrzip、PeaZip、arj等。

1,压缩文件:

  在linux中常用的文件的压缩和归档如下:

压缩工具

解压工具

文件扩展

gzip

gunzip

.gz

bzip2

bunzip2

.bz2

zip

unzip

.zip

   归档文件:时将一组文件或目录保存在一个文件中     

   压缩文件:是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。

    gziplinux中最常用的压缩工具,具有很好的移植性。

    bzip2在性能上优于gzip,提供了最大限度的压缩比率,

    zip是在linuxwindows系统之间文件交换经常使用。

1.gzip与gunzip

gzip [ -l | -d | -num ] filename

选项

描述

-l

查看压缩文件内容的信息,包括文件数、大小、压缩比,并不进行解压

-d

将文件解压,功能与gunzip相同

-num

指定压缩比率,num1-9个等级

 

gunzip [ -f ] file.gz

-f 用于解压文件时,对于覆盖同名文件不提示。

例如:

  压缩: gzip fileName

  解压: gunzip fileName.gz

  解压: gzip –d fileName.gz

.tar.gz .tgz

  压缩: tar . zcvf  fileName.tar.gz DirName

  解压: tar . zxvf  filename.gz

 2.zip与unzip

zip [-m | -r | -j |-k |-n | -t | -x | -y |--num ] zipfile  filelist

 选项

描述

-m

在压缩文件之后,删除源文件

-r

递归的将要压缩的文件下所有内容全部压缩,包括子目录及文件

-j

不要压缩的文件的子目录及文件

-k

使用兼容的8.3命名方式修改文件名,然后在进行压缩

-n

不压缩指定后缀名的文件,直接归档保存

-r

指定压缩某一日期后创建的文件,日期格式为:mmddyy

-x

排除指定的文件不压缩

-y

只压缩连接文件本身,不包括连接目录文件内容

-num

指定压缩比率,num1-9个等级

 unzip [ -x | -Z | -l ] zipfile

选项

描述

-x

排除指定的文件不解压

-Z

查看压缩文件内容的信息,包括文件数、大小、压缩比,并不进行解压

-l

查看压缩文件中实际包含的文件内容

例如:

压缩: zip zipfile..zip  DirName

解压: unzip zipfile.zip

 

Tar:

 tar命令主要用于将若干文件或目录合并一个文件,比便备份和压缩。

tar [ -t | -x | -u | -c | -v | -f | -j | -z] terfile filelist

选项

描述

-t

显示归档文件中内容

-x

释放归档文件

-u

更新归档文件

-c

创建一个新的归档文件

-v

显示归档和释放的过程信息

-f

用户指定归档文件的文件名,否则使用默认名称

-j

tar生成归档,然后由bzip2压缩

-z

tar生成归档,然后由gzip压缩

Tarlinux最常用的。

例如: 

 打包:tarcvf  fileName.tar DirName

 解包:tarxvf  fileName  

后缀是.tar.gz.tgz

压缩: tar zcvf  fileName.tar.gz DirName

 

 解压: tar zxvf  fileName.tar.gz

后缀是.tar.bz2

压缩: tar jcvf  fileName.tar.bz2DirName

解压: tar jxvf  fileName.tar.bz2 或 tar –bizp xvf fileName.tar.bz2 

    例1:# tar  -cf  exam.tar  exam1*.txt(把所有exam1*.txt的文件打包成一个exam.tar文件。其中,-c是产生新备份文件;-f是输出到默认的设备,可以把它当做一定要加的选项)
例2:# tar  -rf  exam.tar  exam2*.txt(exam.tar是一个已经存在的打包文件了,再把exam2*.txt的所有文件也打包进去。-r是再增加文件的意思)
例3:# tar  -uf  exam.tar  exam11.txt(刚才exam1*.txt已经打包进去了,但是其中的exam11.txt后来又做了更改,把新改过的文件再重新打包进去,-u是更新的意思)
例4:# tar  -tf  exam.tar(列出exam.tar中有哪些文件被打包在里面。-t是列出的意思)
例5:# tar  -xf  exam.tar(把exam.tar打包文件中全部文件释放出来,-x是释放的意思)
例6:# tar  -xf  exam.tar  exam2*.txt(只把exam.tar打包文件中的所有exam2*.txt文件释放出来,-x是释放的意思)

打包的时候调用压缩,z调用gzip压缩,j调用bzip2压缩,J调用xz压缩
例7:# tar  -zcf  exam.tar.gz  exam1*.txt
例8:解压解包
1:# tar  -xzvf  exam.tar.gz //加一个选项-v,就是显示打包兼压缩或者解压的过程。因为Linux上最常见的软件包文件是.tar.gz文件,因此,最常看到的解压方式就是这样了
2:# tar  -xzvf  exam.tgz //.tgz文件名也是一样的,因性质一样,仅文件名简单一点而已
3:# tar  xzvf  exam.tar.gz  -C  exam/ // 解压到exam目录中
4:# tar  xjvf  exam.tar.bz2  -C  exam/ // j:使用bzip2


例9:打包压缩
1:# tar  cjvf  test.tar.bz2  exam1*.txt
2:# tar  czvf  test.tar.gz  exam1*.txt

# tar -czvf exam.tar.gz *.*  或  # tar -czvf exam.tgz *.*
# tar  cjvf  exam.tar.bz2  exam1*.txt
# tar  xjvf  exam.tar.bz  -C  exam/ // j:使用bzip2
 

#注意: 在不知道使用什么压缩工具的时候可以使用tar xf 进行解压。    

 

Linux下rar文件的压缩与解压
 rar是在Windows中最常见的压缩文件格式,在Linux中如需使用需要安装rarlinux,官方:
 http://www.rarsoft.com/download.htm
wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz
tar xf rarlinux-x64-5.4.0.tar.gz

cd rar
make && make install

RHEL7 下也可以yum安装,方法如下:
yum install ftp://rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/rar-3.8.0-1.el7.rf.x86_64.rpm
或者使用RPM安装UNRAR,下载地址: http://pkgs.repoforge.org/unrar/

安装完成后即可使用rar和unrar命令。简单用法:
实例1:压缩文件
[root@localhost test]# rar a test test*.txt

RAR 3.80 Copyright (c) 1993-2008 Alexander Roshal 16 Sep 2008
Shareware version Type RAR -? for help

Evaluation copy. Please register.

Creating archive test.rar

Adding test1.txt OK
Adding test2.txt OK
Adding test3.txt OK
Adding test4.txt OK
Adding test5.txt OK
Done
rar a test test*.txt #该命令是将所有以test开头,后缀为txt的文件压缩成一个rar包,名为test,该程序会将.rar 扩展名将自动附加到包名后。

实例2:解压文件
[root@localhost test]# rar e test.rar

RAR 3.80 Copyright (c) 1993-2008 Alexander Roshal 16 Sep 2008
Shareware version Type RAR -? for help


Extracting from test.rar

Extracting test1.txt OK
Extracting test2.txt OK
Extracting test3.txt OK
Extracting test4.txt OK
Extracting test5.txt OK
All OK

或者使用unrar
yum install ftp://rpmfind.net/linux/rpmfusion/nonfree/el/updates/7/x86_64/u/unrar-5.4.5-1.el7.x86_64.rpm

unrar e test.rar #该命令是将rar中的所有文件解压出来。

$ rar --help
 
用法: rar <命令> -<选项 1> -<选项 N> <压缩档案> <文件...>
<@文件列表...> <解压缩路径\>
 
<命令>
a 添加文件到压缩档案
c 添加压缩档案注释(注释的大小最大不能超过62000字节)
cf 添加文件备注( 当使用'v'参数时显示文件备注,最大不能超过32767字节)


注意:rar的<命令>部分不带”-“号,只有<选项>部分带”-“号,这一点注意一下。
例1:添加文件或目录到压缩档案中,使用a命令。例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变,m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件,注意:m命令只针对文件进行操作)
rar a abc.rarfile1
说明:如果此时abc.rar档案不存在,会自行创建abc.rar文档案,如果abc.rar档案已经存在,则将file1文件压缩进abc.rar档案中,若abc.rar档案中已存在一个file1文件,则会更新file1文件。并且原有的file1文件依然存在于当前目录下,若要将file1文件移动到file1.rar中请使用m命令,对于目录同样可以进行此操作。
注意:如果只输入”rar a file1.rar”命令,而没有接文件名或目录名的话,会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。

例2:解压缩abc.rar档案中的内容,可以使用e或x命令,假设abc.rar目录中有一个名为file1的文件和一个名为test的目录,test目录中有一个名为file2的文件,
rar e abc.rar
说明:使用e命令,会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。
rar x abc.rar
说明:此时会将file1文件和test目录解压到当前文件夹。

例3:为整个压缩文件添加注释
rar c abc.rar
说明:输入该命令后,屏幕最下方会显示
Processingarchivetest.
rarReadingcommentfromstdin
并有一个光标在闪烁,从光标闪烁的位置输入注释信息,输入完了按下Ctrl+D结束输入

例4:为压缩文件中的单个文件添加注释,使用cf命令。假如现在要为abc.rar档案中的file1文件添加注释
rar ch abc.rar file1
此时屏幕最下方会显示
Readingcommentfor abc.rar : file1fromstdin
从光标闪烁出输入想要为file1添加的注释,Ctrl+D结束输入

例5:把整个档案的注释写入到一个文件中,使用cw命令。加入要将abc.rar的注释写入到test.txt文件中
rar cw abc.rar test.txt
说明:如果当前目录下不存在名为test.txt的文件,则会自行创建一个名为test.txt的文件,并将abc.rar的注释写入到text.txt文件中,如果当前目录中已经存在一个名为text.txt的文件,则会提示你是否覆盖已经存在的文件,如果选择Yes或者All,则会清空test.txt中原有的内容,然后将abc.rar的注释内容写入到text.txt文件中。

例6:删除压缩档案中的文件或目录,使用d命令。例如要删除abc.rar档案中的file1文件。
rar d abc.rar file1
说明:该命令删除abc.rar档案中的file1文件,对于目录同样有效。

解压缩命令unrar的使用:
$unrar --help
 
用法: unrar <command> -<switch 1> -<switch N> <archive> <files...>
<@listfiles...> <path_to_extract\>
 
<命令>
e 解压文件到当前目录
l[t,b] 列出压缩文档信息[technical, bare]
p 打印文件到标准输出
t 测试压缩我俄当
v[t,b] 列出压缩文档的详细信息[technical,bare]
x 解压文件到完整路径
以下为<选项>部分,略去。
unrar的命令和rar具有同样的效果,可以看出unrar只包含了rar的一部分命令而已,因此使用rar就可以完成所有操作。
 

1.9 7z文件在Linux上的解压缩


Linux要解压缩.7z文件,首先需要安装7zip软件。
yum install p7zip
使用7zip的命令是7za。

安装完成后的使用方法:
7za {a|d|l|e|u|x} 压缩包文件名 {文件列表或目录,可选}
a 向压缩包里添加文件或创建压缩包,如向7z添加001.jpg,执行:7za a 001.7z 001.jpg;将001目录打包执行:7za a 001.7z 001;
d 从压缩里删除文件,如将7z里的001.jpg删除,执行:7za d 001.7z 001.jpg
l 列出压缩包里的文件,如列出7z里的文件,执行:7za l 001.7z
e 解压到当前目录,目录结构会被破坏,如rar内有如下目录及文件123/456/789.html,执行:7za e 001.rar,目录123和456及文件html都会存放在当前目录下。
x 以完整路径解压。
实例:
→ 7za a test.7z dir1/test*.txt #打包目录dir下test开头后缀为txt的文件
→ 7za x test.7z -o/tmp #解压,-o表示输出目录,注意其与目录路径之间没有空格
→ # ls /tmp/dir1/
test3.txt test4.txt test5.txt

 

 

 

1.7  cpio命令


示例如下:
# find  ./home  -print |cpio  -ov > home.cpio //将home目录备份
# cpio  -idv  < /root/home.cpio //要恢复文件的时候
# cpio  -tv  < home.cpio //查看home.cpio文件

# find  .  -depth | cpio  -ocvB > backup.cpio


将当前目录下名为inittab文件加入initrd.cpio包中
# find . -name inittab -depth | cpio -ovcB -A -F initrd.cpio
# find . -name inittab -depth | cpio -ovcB -A -O initrd.cpio
# find . -name inittab -depth | cpio -ovcB -A --quiet -O initrd.cpio(--quit:表示不显示复制块)


从cpio压缩包中的解压出文件,示例如下:
# cpio --absolute-filenames -icvu < test.cpio //解压到原始位置,解压出来的每个文件的时间属性改为当前时间
# cpio --absolute-filenames -icvum < test.cpio //解压到原始位置,同时不改变解压出来的每个文件的时间属性
# cpio -icvu < test.cpio //解压到当前目录下
# cpio -icvum < test.cpio //解压到当前目录下
# cpio -icvdu -r < grub.cpio //在解包cpio时,对解包出来的文件件进行交互的更名
# cpio -icvu --to-stdout < grub.cpio //将cpio包中的文件解压并输入标准输出,注意:既然解压到标准输出,所以就不能使用-d参数了
# cpio --absolute-filenames -vtc < boot.cpio //不忽略文件列表清单的文件名最前面的“/"
# cpio --no-absolute-filenames -vtc < boot.cpio //默认是忽略文件列表清单的文件中最前面的

 

 

 

Logo

更多推荐