全部博文(2065)
分类: LINUX
2010-05-17 14:34:05
linux中的tar命令详解
(整理时间:
命令格式为:
tar [-cxtzjvfpPN] 文件与目录
参数含义说明:
-c 建立一个压缩文件的参数指令(create 的含义)
-x 解开一个压缩文件的参数指令
-t 查看tarfile里面的文件
特别注意:以上三个参数中只能存在一个!不可以同时存在。
心得:做压缩操作就用-c做解压缩操作就用-x
-z 表示是否同时具有gzip的属性。即是否需要用到gzip压缩
-j 是否同时具有bzip2的属性。即是否需要用到bzip2 压缩
-v 压缩过程中是否显示文件。
-f 使用档名。在f 之后要马上接档名。这中间不可再加其它参数
例如:tar –zcvfP tfile sfile 错误的正确的写法应当是:tar –zcvPf tfile sfile
-p 使用原文件的原来属性(属性不会依据使用者而变化)
-P 可以使用绝对路径来压缩!
-N 比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE: 在压缩的过程中,不要将FILE打包!
范例:
示例1. 将/www/client目录下的文件全部打包成到 /www/copy/client.tar
操作一: tar -cvf /www/client.tar /www/client 表示仅打包,不压缩
操作二: tar –zcvf /www/client.tar.gz /www/client 表示以gzip方式压缩并打包
操作三: tar –jcvf /www/client.tar.bz2 /www/client 表示以bzip2压缩打包
笔记:我们一般使用压缩的办法就是
操作二:
tar –zcvf /www/client.tar.gz /www/client 表示以gzip方式压缩并打包
请注意后缀名的变化。如果是采用了gzip 压缩的方式就建议使用tar.gz的方式!
示例二:查阅一个TAR文件里面有哪些文件。
tar -ztvf /www/clinet.tar.gz 看一下参数中用到了 t 表示查看归档文件的内容
示例三:解压缩文件处理
将/www/client.tar.gz 解压缩到/usr/local/src目录下面
#cd /usr/local/src
#tar -zxvf /www/client.tar.gz
示例四:将 /etc/ 内的所有文件备份下来,并且保存其权限!
#tar –zxvpf /tmp/etc.tar.gz /etc
注意:这里面我们带了一个参数选项 p 表示的是保存原有的属性
示例五:在/home当中,比
#tar –N “
带上这个选项 –N 就表示比指定的时间更新的才会进行备份压缩处理!
示例六:我要备份/home, /etc 但不要 /home/dmtsail
命令如下:
#tar -exclude /home/dmtsail -zcvf myfile.tar.gz /home/* /etc
添加一个选项就可以实现!
补充一下:
2010-09-07补充进来的
unzip [-选项] [文件名.zip] [文件名]
将 .zip 压缩文件解压
zip 和 unzip这组程序真正是一对搭档。zip 程序本身没有解压能力,一定要用unzip 程序来解压才行。unzip 是一个真正的程序,并不是 zip 的替身。
因为 zip 程序会把一大堆文件压缩在一起,而解压时,有可能这一大堆文件的其中一些已经存在了(如果都不存在,当然很简单),于是产生了一些错综复杂、纠葛缠绵的解 压情况,您要有心里准备!例如,我们要把这些已经存在的文件通通无条件地覆盖过去呢,还是只有把比它新才覆盖过去?或者无论新旧,只有不存在的文件才压缩 加上去,还是每次遇到已有文件存在时,都要询问我,由我来决定?所谓已经存在,是用 UNIX 的判别法则,还是 DOS 的判别法则?也就是说,如果压缩文件里有一个大写的MYFILE,它和现有的小写myfile算同名文件,还是算不同名文件?
还有,因为 zip可以把整个子目录压缩起来,那么解压缩的时候,又会遇到无可避免的抉择情况:您是要解压回与原来目录一样的位置,还是在现有目录上解压并产生目录?
因为上面情况太复杂了,所以我们只列一道范例命令,然后其他都直接列出选项了:
unzip onepackage.zip a*.doc
把 onepackage.zip 里面凡是 a*.doc 的都解压出来。如果 a*.doc文件名没有输入,就会把onepackage.zip 全部解压。但是最好配合下面的选项,决定您遇到现有相同文件名时的8个处理决策:
-f 只解压更新已存在的文件,其他文件不解压(但更新时会一一询问)。
-u 解压更新已存在的文件,并把不存在的文件也解压(但更新时会一一询问)。
-fo 只解压更新已存在的文件,其他文件不解压(但不询问直接覆盖更新)。
-uo 解压更新已存在的文件,并把不存在的文件也解压(但不询问直接覆盖更新)。
-o 不论文件是新是旧,一律从压缩文件中解压,并直接覆盖。
-n 只把不存在的文件解压,已存在的文件则无论新旧一律保留原状。
-C 不计较大小写的不同,视为相同文件名(默认是视为不同)。
-L 解压时一律将文件名转为小写。
还有,遇到有子目录时的处理决策:
-j 不管原来压缩时的目录为何,均全部解开于现行目录。
-d 后面接一个目录名称。可以指定解压到该目录。
一个其他的常用选项:
-l 只列出压缩包里面有哪些文件,而不真的解开压缩。
我的命令如下:
unzip net-snmp-5.6.pre3.zip -d netsnmp
将我的压缩文件解压缩到指定的目录下面去。