来自:zip11 > 馆藏分类
配色: 字号:
tar zip压缩解压缩命令
2018-02-01 | 阅:  转:  |  分享 
  
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。

?

1、zip?

zip?-r?myfile.zip?./将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.

?

zip?-d?myfile.zip?smart.txt删除压缩文件中smart.txt文件

????zip?-m?myfile.zip?./rpm_info.txt向压缩文件中myfile.zip中添加rpm_info.txt文件

?

????zip?-r?filename.zip?filesdir?

在这个例子里,filename.zip?代表你创建的文件,filesdir?代表你想放置新?zip?文件的目录。-r?选项指定你想递归地(recursively)包括所有包括在?filesdir?目录中的文件。

?

?????zip?-r?filename.zip?file1?file2?file3?/usr/work/school?

上面的命令把?file1、file2、?file3、以及?/usr/work/school?目录的内容(假设这个目录存在)压缩起来,然后放入?filename.zip?文件中。

?

?

?

?????2、unzip?

?

?????unzip?-o?-d?/home/sunny?myfile.zip把myfile.zip文件解压到?/home/sunny/-o:不提示的情况下覆盖文件;-d:-d?/home/sunny?指明将文件解压缩到/home/sunny目录下;

?

?????unzip?abc\?.zip

我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们,

?表示一个字符,如果用表示任意多个字符。

?

?????unzip?-v?large.zip

我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么

?

?????unzip?-t?large.zip

查看一下这个压缩文件是否下载正确了

?

?????unzip?-j?music.zip

我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录

?

?????3、tar?

?????

?????我们知道在Windows下最常见?的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的?压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用。tar本身不具有压缩功能。他是调用压缩功能实现的

必要参数有如下:

-A?新增压缩文件到已存在的压缩

-B?设置区块大小

-c?建立新的压缩文件

-d?记录文件的差别

-r?添加文件到已经压缩的文件

-u?添加改变了和现有的文件到已经存在的压缩文件

-x?从压缩的文件中提取文件

-t?显示压缩文件的内容

-z?支持gzip解压文件

-j?支持bzip2解压文件

-Z?支持compress解压文件

-v?显示操作过程

-l?文件系统边界设置

-k?保留原有文件不覆盖

-m?保留文件不被覆盖

-W?确认压缩文件的正确性

?

??实例1:将文件全部打包成tar包

命令:

tar-cvflog.tarlog2012.log



tar-zcvflog.tar.gzlog2012.log



tar-jcvflog.tar.bz2log2012.log

?

输出:



[root@localhosttest]#ls-allog2012.log



---xrw-r--1rootroot30210811-1306:03log2012.log



[root@localhosttest]#tar-cvflog.tarlog2012.log



log2012.log



[root@localhosttest]#tar-zcvflog.tar.gzlog2012.log



log2012.log



[root@localhosttest]#tar-jcvflog.tar.bz2log2012.log



log2012.log



[root@localhosttest]#ls-al.tar



-rw-r--r--1rootroot30720011-2917:54log.tar



-rw-r--r--1rootroot141311-2917:55log.tar.bz2



-rw-r--r--1rootroot141311-2917:54log.tar.gz



?

?说明:

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

tar?-zcvf?log.tar.gz?log2012.log???打包后,以?gzip?压缩?

tar?-jcvf?log.tar.bz2?log2012.log??打包后,以?bzip2?压缩?

在参数?f?之后的文件档名是自己取的,我们习惯上都用?.tar?来作为辨识。?如果加?z?参数,则以?.tar.gz?或?.tgz?来代表?gzip?压缩过的?tar包;?如果加?j?参数,则以?.tar.bz2?来作为tar包名。

?

????实例2:查阅上述?tar包内有哪些文件

命令:

tar?-ztvf?log.tar.gz

输出:

[root@localhost?test]#?tar?-ztvf?log.tar.gz

---xrw-r--?root/root????302108?2012-11-13?06:03:25?log2012.log

说明:

由于我们使用?gzip?压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上?z?这个参数了。

?

实例3:将tar?包解压缩

命令:

tar?-zxvf?/opt/soft/test/log.tar.gz

输出:

[root@localhost?test3]#?ll

总计?0[root@localhost?test3]#?tar?-zxvf?/opt/soft/test/log.tar.gz

log2012.log

[root@localhost?test3]#?ls

log2012.log

[root@localhost?test3]#

说明:

在预设的情况下,我们可以将压缩档在任何地方解开的

?

实例4:只将?/tar?内的?部分文件解压出来

命令:

tar?-zxvf?/opt/soft/test/log30.tar.gz?log2013.log

输出:



[root@localhosttest]#tar-zcvflog30.tar.gzlog2012.loglog2013.log



log2012.log



log2013.log



[root@localhosttest]#ls-allog30.tar.gz



-rw-r--r--1rootroot151211-3008:19log30.tar.gz



[root@localhosttest]#tar-zxvflog30.tar.gzlog2013.log



log2013.log



[root@localhosttest]#ll



-rw-r--r--1rootroot151211-3008:19log30.tar.gz



[root@localhosttest]#cdtest3



[root@localhosttest3]#tar-zxvf/opt/soft/test/log30.tar.gzlog2013.log



log2013.log



[root@localhosttest3]#ll



总计4



-rw-r--r--1rootroot6111-1306:03log2013.log



[root@localhosttest3]#



?

说明:

我可以透过?tar?-ztvf?来查阅?tar?包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!

实例5:文件备份下来,并且保存其权限

命令:

tar?-zcvpf?log31.tar.gz?log2014.log?log2015.log?log2016.log?

输出:



[root@localhosttest]#ll



总计0



-rw-r--r--1rootroot011-1306:03log2014.log



-rw-r--r--1rootroot011-1306:06log2015.log



-rw-r--r--1rootroot011-1614:41log2016.log



[root@localhosttest]#tar-zcvpflog31.tar.gzlog2014.loglog2015.loglog2016.log



log2014.log



log2015.log



log2016.log



[root@localhosttest]#cdtest6



[root@localhosttest6]#ll



[root@localhosttest6]#tar-zxvpf/opt/soft/test/log31.tar.gz



log2014.log



log2015.log



log2016.log



[root@localhosttest6]#ll



总计0



-rw-r--r--1rootroot011-1306:03log2014.log



-rw-r--r--1rootroot011-1306:06log2015.log



-rw-r--r--1rootroot011-1614:41log2016.log



[root@localhosttest6]#



?

说明:

这个?-p?的属性是很重要的,尤其是当您要保留原本文件的属性时

?

实例6:在?文件夹当中,比某个日期新的文件才备份

命令:

tar?-N?"2012/11/13"?-zcvf?log17.tar.gz?test

输出:



[root@localhostsoft]#tar-N"2012/11/13"-zcvflog17.tar.gztest



tar:Treatingdate`2012/11/13''as2012-11-1300:00:00+0nanoseconds



test/test/log31.tar.gz



test/log2014.log



test/linklog.log



test/log2015.log



test/log2013.log



test/log2012.log



test/log2017.log



test/log2016.log



test/log30.tar.gz



test/log.tar



test/log.tar.bz2



test/log.tar.gz



?

说明:

实例7:备份文件夹内容是排除部分文件

命令:

tar?--exclude?scf/service?-zcvf?scf.tar.gz?scf/

输出:

[root@localhost?test]#?tree?scf

scf

|--?bin

|--?doc

|--?lib

`--?service

?????`--?deploy

??????????|--?info

??????????`--?product

7?directories,?0?files

[root@localhost?test]#?tar?--exclude?scf/service?-zcvf?scf.tar.gz?scf/?

scf/bin/

scf/doc/

scf/lib/

[root@localhost?test]#

?

参考:

?

Linux下的压缩解压缩命令详解

?















































献花(0)
+1
(本文系zip11首藏)