|
tar zip压缩解压缩命令 |
|
|
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。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下的压缩解压缩命令详解
?
|
|
|
|
|
|
|
|
|
|
|