在Linux系统中使用tar命令压缩和解压文件的教程

   linux中的tar命令

  tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令。

  其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩。

  在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子。

  使用tar命令

  tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件。

  tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可以创建非压缩归档文件。

  1.解压一个tar.gz归档

  一般常见的用法是用来解压归档文件,下面的命令将会把文件从一个tar.gz归档文件中解压出来。

  代码如下:

  $ tar -xvzf tarfile.tar.gz

  这里对这些参数做一个简单解释-

  x - 解压文件

  v - 冗长模式,在解压每个文件时打印出文件的名称。

  z - 该文件是一个使用 gzip 压缩的文件。

  f - 使用接下来的tar归档来进行操作。

  这些就是一些需要记住的重要选项。

  解压 tar.bz2/bzip 归档文件

  具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是需要通过使用“j”选项来替换“z”选项。

  代码如下:

  $ tar -xvjf archivefile.tar.bz2

  2.将文件解压到一个指定的目录或路径

  为了将文件解压到一个指定的目录中,使用“-C”选项来指定路径,此处的“C”是大写“C”。

  代码如下:

  $ tar -xvzf abc.tar.gz -C /opt/folder/

  然后,首先需要确认目标目录是否存在,毕竟tar命令并不会为你创建目录,所以如果目标目录不存在的情况下该命令会失败。

  3. 提取出单个文件

  为了从一个归档文件中提取出单个文件,只需要将文件名按照以下方式将其放置在命令后面。

  代码如下:

  $ tar -xz -f abc.tar.gz "./new/abc.txt"

  在上述命令中,可以按照以下方式来指定多个文件。

  代码如下:

  $ tar -xz -f abc.tar.gz "./new/cde.txt" "./new/abc.txt"

  4.使用通配符来解压多个文件

  通配符可以用来解压于给定通配符匹配的一批文件,例如所有以".txt"作为扩展名的文件。

  代码如下:

  $ tar -xz -f abc.tar.gz --wildcards "*.txt"

  5. 列出并检索tar归档文件中的内容

  如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”(test)选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。

  代码如下:

  $ tar -tz -f abc.tar.gz

  ./new/

  ./new/cde.txt

  ./new/subdir/

  ./new/subdir/in.txt

  ./new/abc.txt

  ...

  可以将输出通过管道定向到grep来搜索一个文件,或者定向到less命令来浏览内容列表。 使用"v"冗长选项将会打印出每个文件的额外详细信息。

  对于 tar.bz2/bzip文件,需要使用"j"选项。

  结合上述的命令和grep命令来检索归档文件,如下所示。简单吧!

  代码如下:

  $ tar -tvz -f abc.tar.gz | grep abc.txt

  -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt

  6.创建一个tar/tar.gz归档文件

  现在我们已经学过了如何解压一个tar归档文件,是时候开始创建一个新的tar归档文件了。tar命令可以用来将所选的文件或整个目录放入到一个归档文件中,以下是相应的样例。

  下面的命令使用一个目录来创建一个tar归档文件,它会将该目录中所有的文件和子目录都加入到归档文件中。

  代码如下:

  $ tar -cvf abc.tar ./new/

  ./new/

  ./new/cde.txt

  ./new/abc.txt

  上述命令不会创建一个压缩的的归档文件,只是一个普通的归档文件,只是将多个文件放入到一个归档文件中并没有真正地压缩每个文件。

  为了使用压缩,可以分别使用“z”或“j”选项进行gzip或bzip压缩算法。

  代码如下:

  $ tar -cvzf abc.tar.gz ./new/

  文件的扩展名其实并不真正有什么影响。“tar.gz” 和“tgz”是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名(LCTT 译注:归档是否是压缩的和采用哪种压缩方式并不取决于其扩展名,扩展名只是为了便于辨识。)。

  7. 在添加文件之前进行确认

  一个有用的选项是“w”,该选项使得tar命令在添加每个文件到归档文件之前来让用户进行确认,有时候这会很有用。

  使用该选项时,只有用户输入“y”时的文件才会被加入到归档文件中,如果你不输入任何东西,其默认表示是一个“n”。

  代码如下:

  # 添加指定文件

  $ tar -czw -f abc.tar.gz ./new/*

  add ‘./new/abc.txt’?y

  add ‘./new/cde.txt’?y

  add ‘./new/newfile.txt’?n

  add ‘./new/subdir’?y

  add ‘./new/subdir/in.txt’?n

  #现在列出所有被加入的文件

  $ tar -t -f abc.tar.gz

  ./new/abc.txt

  ./new/cde.txt

  ./new/subdir/

  8. 加入文件到存在的归档文件中

  “r”选项可以被用来将文件加入到已存在的归档文件中,而不用创建一个新的归档文件,下面是一个简单的样例:

  代码如下:

  $ tar -rv -f abc.tar abc.txt

  文件并不能加入到已压缩的归档文件中(gz 或 bzip)。文件只能被加入到普通的归档文件中。

  9. 将文件加入到压缩的归档文件中(tar.gz/tar.bz2)

  之前已经提到了不可能将文件加入到已压缩的归档文件中,然而依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。

  代码如下:

  $ gunzip archive.tar.gz

  $ tar -rf archive.tar ./path/to/file

  $ gzip archive.tar

  对于bzip文件分别使用bzip2和bunzip2。

  10.通过tar来进行备份

  一个真实的场景是在固定的时间间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 :

  代码如下:

  $ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/

  使用cron来运行上述的命令会保持创建类似以下名称的备份文件 :'archive-20150218.tar.gz'。

  当然,需要确保日益增长的归档文件不会导致磁盘空间的溢出。

  11. 在创建归档文件时进行验证

  "W"选项可以用来在创建归档文件之后进行验证,以下是一个简单例子。

  代码如下:

  $ tar -cvW -f abc.tar ./new/

  ./new/

  ./new/cde.txt

  ./new/subdir/

  ./new/subdir/in.txt

  ./new/newfile.txt

  ./new/abc.txt

  Verify ./new/

  Verify ./new/cde.txt

  Verify ./new/subdir/

  Verify ./new/subdir/in.txt

  Verify ./new/newfile.txt

  Verify ./new/abc.txt

  需要注意的是验证动作不能在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。

  这次就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。

时间: 2016-06-06

在Linux系统中使用tar命令压缩和解压文件的教程的相关文章

Mac电脑怎么压缩和解压文件与文件夹

  苹果Mac电脑压缩和解压文件与文件夹的方法 1.如果你需要处理的文件不在桌面上,那么需要先点击[前往]--->[电脑] 2.在电脑窗口中的左侧,有[我的所有文件夹].[应用程序].[桌面]...[图片]这些选项.你能操作的也只有这些选项中的文件或者文件夹.我这里需要把音乐那一项里面的[iTunes]文件夹压缩.那么我就点击[音乐] 3.点击你需要处理文件所在的位置那一项之后,在里面找到需要处理的文件夹或者文件,在其上点击鼠标右键---->[压缩"文件/文件夹名字"] 4

关于在Linux系统中的gdb命令知识

  在Linux系统中有许多的命令程序来辅助系统的正常和方便运行,那么其中在系统中有着一个叫做gdb命令的程序,那么我们今天就来了解下关于gdb命令的知识吧! 一.常规调试 gdb是Linux下常用的程序调试工具,当然前提是用gcc/g++编译时加上-g参数,这样编译出的可执行程序会加上gdb调试信息. gdb命令不少,但常用的主要包括如下命令: (1)list [file:]functuon 命令缩写是l,查看源码,不加参数时,向下显示源码,加参数-l时,向上显示源码,默认显示10行. 也可以

使用tar命令压缩时排除文件夹或者文件

一般某个文件夹例如log用tar打包很简单  代码如下 复制代码 tar -zcvf log.tar.gz log 只要使用上述命令就可以了 1.排除文件夹: 但是生产环境下log里面的日志文件非常庞大,有几十个G,不需要的我们就不备份,举例排除proftpd的日志. 网上查了下用tar --exclude似乎可以解决  代码如下 复制代码 tar -zcvf log.tar.gz --exclude=log/proftpd/ log 但是这样还是会把proftpd的日志文件全部打包进去 后来试

C#中利用SharpZipLib进行压缩和解压

压缩 我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手.只好耐下心来,慢慢的研究,总算找到了门路.针对自己的需要改写了文件压缩和解压缩的两个类,分别为ZipClass和UnZipClass.其中碰到了不少困难,就决定写出来压缩和解压的程序后,一定把源码贴出来共享,让首次接触压缩和解压缩的朋友可以少走些弯路.下面就来解释如何在C#里用http://www.icsh

[JAVA100例]040、压缩和解压文件

//文件名:myZip.java import java.io.*; import java.util.*; import java.util.zip.*; /** * <p>Title: 文件压缩和解压</p> * <p>Description: 使用ZipInputStream和ZipOutputStream对文件 * 和目录进行压缩和解压处理</p> * <p>Copyright: Copyright (c) 2003</p>

Linux系统中的sudo命令使用讲解

  "Sudo" 是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的"权利",让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像restart,reboot,passwd之类的命令,或者编辑一些系统配置文件这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性. sudo是个统管一切的命令.它的字面意思是代表"超级用户才能做!"(super user do!)对Li

Linux系统中vim编辑命令使用方法

使用Linux,少不了和编辑器打交道.Linux系统中有多个编辑器,一般比如nano,gedit,vi,vim等.nano使用简单,很容易上手,不过功能比较单一.vi命令功能强大,不过上手可能不是很容易.vim是vi命令的加强版,一般使用vim命令.下面简单说下vim的常见用法. vim是一个全屏编辑器,模式化编辑器.模式主要有编辑模式,输入模式,末行模式.默认打开vim命令进入的是编辑模式. 打开文件打开文件:vim /path/to/somefile 其他用法: vim +#:打开文件,并定

详解Linux系统中的install命令的用法

  用法:install [选项]... [-T] 源文件 目标文件 或:install [选项]... 源文件... 目录 或:install [选项]... -t 目录 源文件... 或:install [选项]... -d 目录... 此install 将文件(通常仅是编译后的文件)复制到您所选择的目的位置. 如果您希望在GNU/Linux 操作系统上下载并安装一个即时可用的软件包, 您应当使用诸如yum(1) 和apt-get(1) 的软件包管理器. 在前三种形式中,将源文件复制到目标文

Linux系统中使用lftp命令实现FTP上传下载

  适合于 FTP 操作的命令和软件比较多. Linux 下常用的操作命令有 ftp, lftp 和 sftp,图形化界面非常好用的有 FileZilla.不过在服务器命令界面中,我还是觉得lftp使用比较方便,功能也比ftp更加强大.lftp的界面很像Linux的shell,有命令补全.历史记录.允许多个后台任务执行.书签.排队.镜像.断点续传.多进程下载等功能. 登录ftp命令 代码: lftp 用户名:密码@ftp地址:传送端口(默认21) 用法 (1)lftp username:pass