本教程会展示如何使用 tar 创建、列出和提取归档中的内容。这三个操作都会使用两个公共选项 -f 和 -v:使用 -f 指定归档文件的名称,使用 -v(“冗余”)选项使 tar 在处理文件时输出文件名。虽然 -v 选项不是必需的,但是它可以让你观察 tar 操作的过程。

简而言之,归档是一个包含一系列文件和(或)目录的单一文件。归档文件通常用于在本地或互联网上传输,或作为一个一系列文件和目录的备份副本,从而允许你使用一个文件来工作(如果压缩,则其大小会小于所有文件的总和)。同样的,归档也用于软件应用程序打包。为了方便传输,可以很容易地压缩这个单一文件,而存档中的文件会保留原始结构和权限。

我们可以使用 tar 工具来创建、列出和提取归档中的文件。用 tar 生成的归档通常称为“tar 文件”、“tar 归档”或者“压缩包”(因为所有已归档的文件被合成了一个文件)。

本教程会展示如何使用 tar 创建、列出和提取归档中的内容。这三个操作都会使用两个公共选项 -f 和 -v:使用 -f 指定归档文件的名称,使用 -v(“冗余”)选项使 tar 在处理文件时输出文件名。虽然 -v 选项不是必需的,但是它可以让你观察 tar 操作的过程。

在本教程的下面部分中,会涵盖 3 个主题:1、创建一个归档文件;2、列出归档文件内容;3、提取归档文件内容。另外我们会回答归档文件管理的 6 个实际问题来结束本教程。你从本教程学到的内容对于执行与网络安全和云技术相关的任务至关重要。

1、创建一个归档文件

要使用 tar 创建一个归档文件,使用 -c(“创建”)选项,然后用 -f 选项指定要创建的归档文件名。通常的做法是使用带有 .tar 扩展名的名称,例如 my-backup.tar。注意,除非另有特别说明,否则本文其余部分中使用的所有命令和参数都以小写形式使用。记住,在你的终端上输入本文的命令时,无需输入每个命令行开头的 $ 提示符。

输入要归档的文件名作为参数;如果要创建一个包含所有文件及其子目录的归档文件,提供目录名称作为参数。

要归档 project 目录内容,输入:

$ tar -cvf project.tar project

这个命令将创建一个名为 project.tar 的归档文件,包含 project 目录的所有内容,而原目录 project 将保持不变。

使用 -z 选项可以对归档文件进行压缩,这样产生的输出与创建未压缩的存档然后用 gzip 压缩是一样的,但它省去了额外的步骤。

要从 project 目录创建一个 project.tar.gz 的压缩包,输入:

$ tar -zcvf project.tar.gz project

这个命令将创建一个 project.tar.gz 的压缩包,包含 project 目录的所有内容,而原目录 project 将保持不变。

注意: 在使用 -z 选项时,你应该使用 .tar.gz 扩展名而不是 .tar 扩展名,这样表示已压缩。虽然不是必须的,但这是一个很好的实践。

gzip 不是唯一的压缩形式,还有 bzip2 和 xz。当我们看到扩展名为 .xz 的文件时,我们知道该文件是使用 xz 压缩的,扩展名为 .bz2 的文件是用 bzip2 压缩的。随着 bzip2 不再维护,我们将远离它而关注 xz。使用 xz 压缩时,需要花费更长的时间。然而,等待通常是值得的,因为压缩效果要好的多,这意味着压缩包通常比使用其它压缩形式要小。更好的是,不同压缩形式之间的解压缩或提取文件并没有太大区别。下面我们将看到一个使用 tar 压缩文件时如何使用 xz 的示例:

$ tar -Jcvf project.tar.xz project

我们只需将 gzip 的 -z 选项转换为 xz 的大写 -J 即可。以下是一些输出,显示压缩形式之间的差异:

如你所见,xz 的压缩时间最长。但是,它在减小文件大小方面做的最好,所以值得等待。文件越大,压缩效果也越好。

2、列出归档文件的内容

要列出 tar 归档文件的内容但不提取,使用 -t 选项。

要列出 project.tar 的内容,输入:

$ tar -tvf project.tar

这个命令列出了 project.tar 归档的内容。-v 和 -t 选项一起使用会输出每个文件的权限和修改时间,以及文件名。这与 ls 命令使用 -l 选项时使用的格式相同。

要列出 project.tar.gz 压缩包的内容,输入:

$ tar -tzvf project.tar.gz

3、从归档中提取内容

要提取(解压)tar 归档文件中的内容,使用 -x(“提取”)选项。

要提取 project.tar 归档的内容,输入:

$ tar -xvf project.tar

这个命令会将 project.tar 归档的内容提取到当前目录。

如果一个归档文件被压缩,通常来说它的扩展名为 .tar.gz 或 .tgz,请包括 "-z" 选项。

要提取 project.tar.gz 压缩包的内容,输入:

$ tar -zxvf project.tar.gz

注意: 如果当前目录中有文件或子目录与归档文件中的内容同名,那么在提取归档文件时,这些文件或子目录将被覆盖。如果你不知道归档中包含哪些文件,请考虑先查看归档文件的内容。

在提取归档内容之前列出其内容的另一个原因是,确定归档中的内容是否包含在目录中。如果没有,而当前目录中包含许多不相关的文件,那么你可能将它们与归档中提取的文件混淆。

要将文件提取到它们自己的目录中,新建一个目录,将归档文件移到该目录,然后你就可以在新目录中提取文件。

FAQ

现在我们已经学习了如何创建归档文件并列出和提取其内容,接下来我们可以继续讨论 Linux 专业人员经常被问到的 9 个实用问题。

可以在不解压缩的情况下添加内容到压缩包中吗?

很不幸,一旦文件将被压缩,就无法向其添加内容。你需要解压缩或提取其内容,然后编辑或添加内容,最后再次压缩文件。如果文件很小,这个过程不会花费很长时间,否则请等待一会。

可以在不解压缩的情况下删除归档文件中的内容吗?

这取决压缩时使用的 tar 版本。较新版本的 tar 支持 -delete 选项。

例如,假设归档文件中有 file1 和 file2,可以使用以下命令将它们从 file.tar 中删除:

$ tar -vf file.tar –delete file1 file2

删除目录 dir1:

$ tar -f file.tar –delete dir1/*

压缩和归档之间有什么区别?

查看归档和压缩之间差异最简单的方法是查看其解压大小。归档文件时,会将多个文件合并为一个。所以,如果我们归档 10 个 100kb 文件,则最终会得到一个 100kb 大小的文件。而如果压缩这些文件,则最终可能得到一个只有几 kb 或接近 100kb 的文件。

如何压缩归档文件?

如上所说,你可以使用带有 cvf 选项的 tar 命令来创建和归档文件。要压缩归档文件,有两个选择:通过压缩程序(例如 gzip)运行归档文件,或在使用 tar 命令时使用压缩选项。最常见的压缩标志 -z 表示 gzip,-j 表示 bzip,-J 表示 xz。例如:

$ gzip file.tar

或者,我们可以在使用 tar 命令时使用压缩标志,以下命令使用 gzip 标志 z:

$ tar -cvzf file.tar /some/directory

如何一次创建多个目录和/或文件的归档?

一次要归档多个文件,这种情况并不少见。一次归档多个文件和目录并不像你想的那么难,你只需要提供多个文件或目录作为 tar 的参数即可:

tar -cvzf file.tar file1 file2 file3

创建归档时如何跳过目录和/或文件?

你可能会遇到这样的情况:要归档一个目录或文件,但不是所有文件,这种情况下可以使用 --exclude 选项:

$ tar –exclude ‘/some/directory’ -cvf file.tar /home/user

在示例中,/home/user 目录中除了 /some/directory 之外都将被归档。将 --exclude 选项放在源和目标之前,并用单引号将要排除的文件或目录引起来,这一点很重要。

总结

tar 命令对展示不需要的文件创建备份或压缩文件很有用。在更改文件之前备份它们是一个很好的做法。如果某些东西在更改后没有按预期正常工作,你始终可以还原到旧文件。压缩不再使用的文件有助于保持系统干净,并降低磁盘空间使用率。还有其它实用程序可以归档或压缩,但是 tar 因其多功能、易用性和受欢迎程度而独占鳌头。

在 Linux 中创建和管理归档文件教程在 Linux 中创建和管理归档文件教程相关推荐

  1. setenv设置环境变量_setenv命令教程在Linux中添加,删除和更改环境变量

    setenv设置环境变量 Linux and Unix ecosystem mainly used command line based. While working with command lin ...

  2. linux php 用户权限管理,LINUX教程:Linux用户及权限管理

    <LINUX教程:Linux用户及权限管理>要点: 本文介绍了LINUX教程:Linux用户及权限管理,希望对您有用.如果有疑问,可以联系我们. [文件治理.管道.用户及组治理.用户及权限 ...

  3. zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...

    作者:Commanderfranz,编译: kenshin 通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统,今天这篇文章的内容是将这两部分联系起来,其实我们创建的myLed I ...

  4. virtualbox主机网络管理 未能创建_如何在 VirtualBox 中增加现有虚拟机的磁盘大小 | Linux 中国...

    导读:你可以在 VirtualBox 中扩大虚拟硬盘,即使在创建之后也可以. 本文字数:1434,阅读时长大约:2分钟https://linux.cn/article-12869-1.html作者:D ...

  5. Linux用户(user)和用户组(group)的日常管理与操作教程概述

    摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是 <Linux 用户(User)和用户组(Group)管理概述> 文档的关健部份的细化:通过本文,您至少能明白/etc ...

  6. Linux怎么把硬盘ex2改为ex4,linux磁盘管理和文件系统创建

    1磁盘管理 1.1硬盘的构造原理 硬盘分类: 机械式硬盘,固态硬盘 硬盘出厂会进行低级格式化,分磁盘,再分扇区,硬盘的第一个磁道的一个扇区就是MBR 512Bytes Master boot reco ...

  7. 在linux系统中 创建用户账户的同时,在Linux系统中大批量建立帐户

    在Linux系统中大批量建立帐户 企业如果想在Linux操作系统上部署文件的话,可能需要一次性建立大量的帐户.如为了加强文件的管理力度,需要为每个员工配置一个帐户.如此的话,就可以针对员工进行权限控制 ...

  8. linux有个很大的内存目录,Linux中的内存管理

    Linux的内存管理方式经常会在面试时作为操作系统基础被问道.搞清楚这个问题的好处很多,近的话可以应付面试,远的可以提高对于操作系统底层的认识,为程序的性能优化打下基础. 我们对于计算机内存,最直观和 ...

  9. linux系统中的分区与挂载,以及使用LVM逻辑卷管理器管理物理卷,卷组,逻辑卷知识点总结

    物理设备的命名规则 在Linux系统中一切都是文件,硬件设备也不例外.既然是文件,就必须有文件名称.系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大 ...

最新文章

  1. 派派月度环比增长明显 创新互动玩法引关注
  2. C#学习笔记(C#与C++的差异)001
  3. Vue.js-localhost:8080-无法显示此网页-【已经初始化的项目,如何再次在服务器上运行?】
  4. JQuery.validate.js 表单验证
  5. 社区开源版本,基于Springboot精简了代码,改变为单体,方便大家一键启动
  6. python3 collections数据类型模块
  7. VC编译选项 /EHa 异常处理
  8. 汇编学习--7.10--程序编写
  9. ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
  10. 智慧交通:数智化地铁大屏管控运维平台
  11. 【GPT-3】第1章 大型语言模型时代
  12. pyspark运行ALS推荐算法
  13. Autovue集成全过程
  14. JAVA Oracle插入大量数据优化
  15. [英语阅读]意环保者塑“老贝”冰雕督促环保
  16. 音视频技术开发周刊 | 274
  17. 贴片LED不良品的常见问题分析
  18. borders.GetItem()方法 获取斜线Border (VC在Excel中画斜线格)
  19. Python图像增强
  20. spark count统计元素个数

热门文章

  1. 顶级数学家有多厉害?
  2. 喜大普奔!GitHub官方文档推出中文版啦!
  3. ACMNO.5给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E
  4. 干货|对比理解不同概率估计和模型损失函数
  5. 机器视觉------- SciSmart图像定位-ROI校正算法
  6. ZABBIX利用自带模板监控mysql数据库
  7. [Math]理解卡尔曼滤波器 (Understanding Kalman Filter)
  8. Sqlite3的安装Windows
  9. Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
  10. MongoDB 计划缓存的影响