Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161827
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 377
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-01 11:18
个人简介

虔诚运维

文章分类

全部博文(42)

文章存档

2014年(42)

我的朋友

分类: LINUX

2014-07-10 13:06:18


Linuxtar命令详解

解压

语法:tar [主选项+辅选项] 文件或者目录

使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。

 

主选项:

 

c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。

x 从档案文件中释放文件。相当于拆包。

t 列出档案文件的内容,查看已经备份了哪些文件。

特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。

-r:向压缩归档文件末尾追加文件 见范例十

-u:更新原压缩包中的文件 

 

辅助选项:

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩或解压?一般格式为xx.tar.bz2  

-v :压缩的过程中显示文件!这个常用

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!

-p :使用原文件的原来属性(属性不会依据使用者而变)

-P :可以使用绝对路径来压缩!

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

--exclude FILE:在压缩的过程中,不要将 FILE 打包!(如果是目录不能加末尾“/”或者用“/*”)

-Z:有compress属性的 

-O:将文件解开到标准输出 

 

 

下面的参数-f是必须的 

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 

# tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 

# tar -rf all.tar *.gif 

这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 

# tar -uf all.tar logo.gif 

这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 

# tar -tf all.tar 

这条命令是列出all.tar包中所有文件,-t是列出文件的意思 

# tar -xf all.tar 

这条命令是解出all.tar包中所有文件,-x是解开的意思 

压缩 

tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 

tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz 

tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 

tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z 

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux 

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux 

 

解压 

tar –xvf file.tar //解压 tar包 

tar -xzvf file.tar.gz //解压tar.gz 

tar -xjvf file.tar.bz2 //解压 tar.bz2 

tar –xZvf file.tar.Z //解压tar.Z 

unrar e file.rar //解压rar 

unzip file.zip //解压zip 

 

 

范例:

范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc    <==仅打包,不压缩!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc  <==打包后,以 gzip 压缩

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc  <==打包后,以 bzip2 压缩

# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

# 上述指令在执行的时候,会显示一个警告讯息:

# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。

 

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

# 就得要加上 z 这个参数了!这很重要的!

 

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说

# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz

# 则解开的目录会在 /usr/local/src/etc ,另外,如果您进入 /usr/local/src/etc

# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

 

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

 

范例五:我要备份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

 

范例六:将 /etc/ 内的所有文件备份下来,并且保存其权限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

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

 

范例七:在 /home 当中,比 2005/06/01 新的文件才备份

[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home

 

范例八:我要备份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

 

范例九:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -

# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

# 这分别代表 standard output, standard input 与管线命令啦!

 

    范例十:追加tar -rvf  *.tar.gz  *
 

包可以有两种理解:

1.这个tar包的名字叫 ,但本质上是一个用cvf创建的tar包

2.这个tar包是通过zc选项创建的压缩的

 

对于上面两种情况,你首先用file命令查看一下这个文件到底是哪个类型:

追加操作只针对没有压缩的tar包才有效。如果这个是经过gzip压缩的,是无法进行追加操作的。

 

另外:tar命令的C参数

 

  $ tar -cvf file2.tar /home/usr2/file2

  tar: Removing leading '/' from members names

  home/usr2/file2

  该命令可以将/home/usr2/file2文件打包到当前目录下的file2.tar中,需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来。使用tar命令解压缩后会出现以下情况:

  $ tar -xvf file2.tar

  $ ls

  …… …… home …… …… 

  解压缩后的文件名不是想象中的file2,而是home/usr2/file2。

 

  $ tar -cvf file2.tar -C /home/usr2 file2

  该命令中的-C dir参数,将tar的工作目录从当前目录改为/home/usr2,将file2文件(不带绝对路径)压缩到file2.tar中。注意:-C dir参数的作用在于改变工作目录,其有效期为该命令中下一次-C dir参数之前。

  使用tar的-C dir参数,同样可以做到在当前目录/home/usr1下将文件解压缩到其他目录,例如:

  $ tar -xvf file2.tar -C /home/usr2

  而tar不用-C dir参数时是无法做到的:

  $ tar -xvf file2.tar /home/usr2

  tar: /tmp/file: Not found in archive

  tar: Error exit delayed from previous errors

 

linuxtar.gztarbz2zip等解压缩、压缩命令小结

 

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进 

行压缩了,所以首先就来讲讲tar命令的基本用法: 

  tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 

来举例说明一下: 

  # tar -cf all.tar *.jpg 

  这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包 

,-f指定包的文件名。 

  # tar -rf all.tar *.gif 

  这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的 

意思。 

# tar -uf all.tar logo.gif 

  这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 

 

  # tar -tf all.tar 

  这条命令是列出all.tar包中所有文件,-t是列出文件的意思 

  # tar -xf all.tar 

  这条命令是解出all.tar包中所有文件,-x是解开的意思 

  以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压 

文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压 

缩程序,比如调用gzip、bzip2等。 

  1) tar调用gzip 

  gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip 

相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下 

: 

  # tar -czf all.tar.gz *.jpg 

  这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个 

gzip压缩过的包,包名为all.tar.gz 

  # tar -xzf all.tar.gz 

  这条命令是将上面产生的包解开。 

  2) tar调用bzip2 

  bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。 

与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例 

说明一下: 

  # tar -cjf all.tar.bz2 *.jpg 

  这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个 

bzip2压缩过的包,包名为all.tar.bz2 

  # tar -xjf all.tar.bz2 

  这条命令是将上面产生的包解开。 

3)tar调用compress 

  compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人 

多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress 

。tar中使用-Z这个参数来调用compress。下面来举例说明一下: 

  # tar -cZf all.tar.Z *.jpg 

  这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成 

一个uncompress压缩过的包,包名为all.tar.Z 

  # tar -xZf all.tar.Z 

  这条命令是将上面产生的包解开 

 

  有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文 

件作一个小结: 

  1)对于.tar结尾的文件 

  tar -xf all.tar 

  2)对于.gz结尾的文件 

  gzip -d all.gz 

  gunzip all.gz 

  3)对于.tgz或.tar.gz结尾的文件 

  tar -xzf all.tar.gz 

  tar -xzf all.tgz 

  4)对于.bz2结尾的文件 

  bzip2 -d all.bz2 

  bunzip2 all.bz2 

  5)对于tar.bz2结尾的文件 

  tar -xjf all.tar.bz2 

  6)对于.Z结尾的文件 

  uncompress all.Z 

  7)对于.tar.Z结尾的文件 

  tar -xZf all.tar.z 

 

  另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它 

们: 

  1)对于.zip 

  linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参 

数选项很多,这里只做简单介绍,依旧举例说明一下其用法: 

  # zip all.zip *.jpg 

  这条命令是将所有.jpg的文件压缩成一个zip包 

# unzip all.zip 

  这条命令是将all.zip中的所有文件解压出来 

  2)对于.rar 

  要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux 不是免费的;可从下载RARfor Linux 3.2. 

0,然后安装: 

  # tar -xzpvf rarlinux-3.2.0.tar.gz 

  # cd rar 

  # make 

  这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法: 

 

  # rar a all *.jpg 

  这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 

扩展名将自动附加到包名后。 

  # unrar e all.rar 

  这条命令是将all.rar中的所有文件解压出来 

  到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress 、 uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar 、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar这10种压缩文 

件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。 

  本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz 、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. tar.Z、.zip、.rar这10种压缩文件进行 

操作。 

总结 

1、*.tar 用 tar –xvf 解压 

2、*.gz 用 gzip -d或者gunzip 解压 

3、*.tar.gz和*.tgz 用 tar –xzf 解压 

4、*.bz2 用 bzip2 -d或者用bunzip2 解压 

5、*.tar.bz2用tar –xjf 解压 

6、*.Z 用 uncompress 解压 

7、*.tar.Z 用tar –xZf 解压 

8、*.rar 用 unrar e解压 

9、*.zip 用 unzip 解压

 

 


阅读(1076) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~