Linux 中的 Tar 命令(创建和提取档案)

2023-11-19

The tar命令通过将一组文件转换为存档来创建 tar 文件。它还可以提取 tar 存档、显示存档中包含的文件列表、向现有存档添加其他文件以及各种其他类型的操作。

Tar 最初设计用于创建档案以将文件存储在磁带上,这就是它得名“的原因”Tape ARchive”.

本文展示了如何使用tar通过实际示例和最常见 tar 选项的详细说明,使用命令来提取、列出和创建 tar 档案。

tar命令语法#

tar 有两个版本,BSD tar , and GNU tar,有一些功能差异。大多数 Linux 系统默认预装了 GNU tar。

的一般语法为tar命令如下:

tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(s)]
  • OPERATION - Only one operation argument is allowed and required. The most frequently used operations are:
    • --create (-c) - 创建一个新的 tar 存档。
    • --extract (-x) - 提取整个存档或从存档中提取一个或多个文件。
    • --list (-t) - 显示存档中包含的文件列表
  • OPTIONS - The most frequently used operations are:
    • --verbose (-v) - 显示 tar 命令正在处理的文件。
    • --file=archive=name (-f archive-name) - 指定存档文件名。
  • ARCHIVE_NAME- 档案的名称。
  • FILE_NAME(s)- 要从存档中提取的以空格分隔的文件名列表。如果未提供,则会提取整个存档。

执行 tar 命令时,可以使用长格式或短格式tar操作和选项。长格式更具可读性,而短格式打字速度更快。长格式选项以双破折号为前缀(--)。短格式选项以一个破折号为前缀(-),可以省略。

创建 Tar 存档#

Tar 支持多种压缩程序,例如gzip, bzip2, lzip, lzma, lzop, xz and compress。创建压缩的 tar 存档时,将压缩器后缀附加到存档文件名是一种可接受的约定。例如,如果存档已被压缩gzip,它应该命名为archive.tar.gz。

要创建 tar 存档,请使用-c选项后跟-f以及档案的名称。

例如,创建一个名为archive.tar从名为file1, file2, file3,您将运行以下命令:

tar -cf archive.tar file1 file2 file3

以下是使用长格式选项的等效命令:

tar --create --file=archive.tar file1 file2 file3

您可以从一个或多个目录或文件的内容创建存档。默认情况下,目录是递归归档的,除非--no-recursion选项已指定。

以下示例将创建一个名为user_backup.tar of the /home/user目录:

tar -cf backup.tar /home/user

Use the -v如果您想查看正在处理的文件,请选择该选项。

创建 Tar Gz 存档#

Gzip 是最流行的 tar 文件压缩算法。使用 gzip 压缩 tar 存档时,存档名称应以以下任一结尾tar.gz or tgz.

The -z选项告诉 tar 使用以下命令压缩存档gzip算法创建时。例如,要创建一个 tar.gz从给定文件归档,您将运行以下命令:

tar -czf archive.tar.gz file1 file2

创建 Tar Bz2 存档#

另一种流行的压缩 tar 文件的算法是 bzip2。使用 bzip2 时,存档名称应以以下任一结尾tar.bz2 or tbz.

要使用以下命令压缩存档bzip2算法,调用tar-j选项。以下命令创建一个tar.bz2从给定文件归档:

tar -cjf archive.tar.bz2 file1 file2

列出焦油档案#

当与--list (-t) 选项,tar命令列出 tar 存档的内容而不解压它。

下面的命令将列出archive.tar file:

tar -tf archive.tar
file1file2file3

要获取更多信息,例如文件所有者, 文件大小,时间戳使用--verbose (-v) 选项:

tar -tvf archive.tar
-rw-r--r-- linuxize/users       0 2018-09-08 01:19 file1-rw-r--r-- linuxize/users       0 2018-09-08 01:19 file2-rw-r--r-- linuxize/users       0 2018-09-08 01:19 file3

提取焦油档案#

Linux 中的大多数归档文件都是使用 tar 或 tar.gz 格式进行归档和压缩的。了解如何从命令行提取这些文件很重要。

要提取 tar 存档,请使用--extract (-x) 选项后跟存档名称:

tar -xf archive.tar

添加以下内容也是很常见的-v选项来打印正在提取的文件的名称。

tar -xvf archive.tar

在不同的目录中提取 Tar 存档#

默认情况下,tar 会将存档内容提取到当前工作目录。使用--directory (-C) 将存档文件提取到特定目录中:

例如,将存档内容提取到/opt/files目录,您可以使用:

tar -xf archive.tar -C /opt/files

提取 Tar Gz 和 Tar Bz2 档案#

提取压缩档案时,例如tar.gz or tar.bz2,您不必指定解压缩选项。命令与解压时相同tar档案:

tar -xf archive.tar.gz
tar -xf archive.tar.bz2

从 Tar 存档中提取特定文件#

有时,您可能只需要从中提取几个文件,而不是提取整个归档文件。

要从 tar 存档中提取特定文件,请在存档名称后附加要提取的文件名的空格分隔列表:

tar -xf archive.tar file1 file2

提取文件时,您必须提供它们的确切名称,包括路径,如打印的那样--list (-t).

从存档中提取一个或多个目录与提取文件相同:

tar -xf archive.tar dir1 dir2

如果您尝试提取不存在的文件,将显示类似于以下内容的错误消息:

tar -xf archive.tar README
tar: README: Not found in archive
tar: Exiting with failure status due to previous errors

使用通配符从 Tar 存档中提取文件#

要根据通配符模式从存档中提取文件,请使用--wildcards切换并引用模式以防止 shell 解释它。

例如,要提取名称结尾为的文件.js(Javascript 文件),您可以使用:

tar -xf archive.tar --wildcards '*.js'

将文件添加到现有 Tar 存档#

要将文件或目录添加到现有 tar 存档中,请使用--append (-r) 手术。

例如,添加一个名为newfile对于 archive.tar,您将运行:

tar -rvf archive.tar newfile

从 Tar 存档中删除文件#

Use the --delete从存档中删除文件的操作。

以下示例展示了如何删除该文件file1来自 archive.tar,:

tar --delete -f archive.tar file1

结论#

最常见的用途tar命令是创建并提取 tar 存档。要提取存档,请使用tar -xf命令后跟存档名称,并创建一个新的使用tar -czf后跟存档名称以及要添加到存档中的文件和目录。

有关 tar 命令的更多信息,请参阅Gnu tar 文档页面 .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 Tar 命令(创建和提取档案) 的相关文章

  • 无法打开本地终端

    我尝试在 Android Studio 中初始化我的终端 但它给了我错误 它说 无法打开本地终端 java io IOException 无法创建 PTY 我的电脑运行的是 Windows 10 如何解决这个问题 当您从 Github 存储
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • Gulp 错误:找不到模块“jshint/src/cli”

    因此 我重新安装了 El Capitan 并再次尝试这些任务运行程序 我正在跟进sitepoint 的 Gulp js 简介 http www sitepoint com introduction gulp js 但当我尝试运行时 我陷入了
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 如何通过终端运行 JavaScript 脚本?

    例如 如果您要运行 Python 脚本 您可以输入python 文件名 py或者如果你想运行 C 程序制作文件名 then 文件名 你如何做到这一点 js files 另一个答案是 NodeJS Node js 是一个基于 Chrome 的
  • 如何在 Mac 上设置默认 shell,例如钓鱼? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不喜欢重新输入fish每次我启动终端时 我想Fish https en wikipedia org wiki Fish Unix she
  • 如何在 Visual Studio Code 中从集成终端引用当前文件

    我想知道是否可以 使用内置变量 直接使用集成终端在 Visual Studio 中打开的当前文件 例如 gt some command current file Where current file would be a built in
  • 如何将环境变量 PACKAGE_DIRS 链接到我的本地私有包?

    我正在尝试设置一个环境变量 以便当我正在处理 Meteor 应用程序时 并且我想将本地私有包链接到我的项目 Meteor 将查找我在本地环境中创建的包目录 我做的第一件事是创建一个包目录并向其中添加一个基本的测试包 Users scotty
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • 如何在 bash 上运行 MySQL 命令?

    以下代码在命令行上运行 mysql user myusername password mypassword database mydatabase execute DROP DATABASE myusername CREATE DATABA
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 为 CocoaPods 插件设置 Xcode

    我正在尝试设置终端 Xcode 以便正确工作Xcode CocoaPods 插件 https github com kattrali cocoapods xcode plugin 当我从插件运行集成 cocoapods 选项时 我收到一条消
  • 安装 homebrew 后终端无法识别 nvm

    我通过自制软件安装了 nvm 但是当我运行 nvm v 或 nvm version 表单终端时 我收到消息 command not found nvm 当我查看 finder 和 cmd shift 时 我可以看到 nvm 文件夹 最初 我
  • 在 MacOS 上重新启动终端而不关闭

    如何在不关闭窗口的情况下重新启动当前的 MacOS 终端会话 在Linux中我使用exec bash但在这种环境下它不起作用 我对 bash profile 提示 别名等 我想在不关闭它并再次打开的情况下查看 只需输入命令 exec bas
  • 如何根据 Bash 中的 VI 模式更改光标形状?

    我的 bashrc 中有以下行 set o vi 我希望我的光标在插入模式下具有管道形状 在命令模式下具有块形状 就像我在 vimrc 中放置以下内容时在 Vim 中的形状一样 let t SI e 6 q let t SR e 4 q l
  • Gulp BrowserSync 在终端中显示“重新加载浏览器”,但没有重新加载实际的浏览器。

    我遇到一个问题 我的任务正在按需要运行 并且 BrowserSync 似乎正在工作 但实际的浏览器没有重新加载 我在终端中收到正确的消息 表明一切都按计划进行 我正在为我的本地服务器使用 MAMP 该服务器正在为 WordPress 构建提
  • DHT22传感器导入Adafruit_DHT错误

    因此 我已将 DHT22 湿度传感器正确连接到我的 BeagleBone Black Rev C 我在 MacBook Pro 上运行 OS Mavericks 并且按照 Adafruit 提供的有关如何使用 DHT22 的说明进行操作 我
  • 带闭包的默认属性值使编译器重新编译所有文件

    This source https developer apple com library content documentation Swift Conceptual Swift Programming Language Initiali
  • 向上移动箭头不突出显示文本 emacs iterm2

    我最近有人帮忙修复M left等等 终端元箭头键绑定中的 emacs https stackoverflow com questions 10867199 emacs in terminal meta arrow keybindings 但
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查

随机推荐

  • Linux 中的 lsmod 命令(列出内核模块)

    lsmod是一个命令行实用程序 显示有关已加载的 Linux 内核模块的信息 内核模块 内核是操作系统的核心组件 它管理系统的资源 是计算机硬件和软件之间的桥梁 Linux内核采用模块化设计 内核模块 通常称为驱动程序 是扩展内核功能的一段
  • 如何 Grep 查找多个字符串和模式

    grep是一种功能强大的命令行工具 允许您在一个或多个输入文件中搜索与正则表达式匹配的行 并将每个匹配行写入标准输出 在本文中 我们将向您展示如何使用 GNUgrep搜索多个字符串或模式 Grep 多种模式 GNU grep支持三种正则表达
  • 如何在Linux上挂载ISO文件

    ISO 文件是一种存档文件 通常包含 CD 或 DVD 的完整映像 例如 大多数操作系统 例如 Windows Linux 和 macOS 都以 ISO 映像的形式分发 ISO 文件可以使用流行的存档程序提取 安装在循环设备上并写入 USB
  • 如何在 Ubuntu 18.04 上安装 Ruby

    Ruby 是当今最流行的语言之一 它具有优雅的语法 并且是强大的 Ruby on Rails 框架背后的语言 在本教程中 我们将向您展示在 Ubuntu 18 04 系统上安装 Ruby 的三种不同方法 先决条件 在开始学习本教程之前 请确
  • 使用 PuTTYgen 在 Windows 上生成 SSH 密钥

    Secure Shell SSH 是一种加密网络协议 用于客户端和服务器之间的安全连接 支持各种身份验证机制 两种最流行的机制是基于密码的身份验证和基于公钥的身份验证 使用 SSH 密钥比传统的密码身份验证更安全 更方便 本教程介绍如何使用
  • 如何在 CentOS 7 上设置 Apache 虚拟主机

    Apache 虚拟主机允许多个网站在一台 Web 服务器上运行 使用虚拟主机 您可以指定站点文档根 包含网站文件的目录 为每个站点创建单独的安全策略 为每个站点使用不同的 SSL 证书等等 在本教程中 我们将提供有关如何在 CentOS 7
  • Linux 文件命令

    Linuxfile命令显示文件的类型 当您必须找出以前从未见过的文件类型或文件没有文件扩展名时 这会很有帮助 Linux 文件命令语法 Linux 的语法file命令如下 file OPTION FILE 它可以采用一个或多个文件名作为其参
  • 如何在 Ubuntu 20.04 上配置静态 IP 地址

    本文介绍如何在 Ubuntu 20 04 上设置静态 IP 地址 通常 在大多数网络配置中 IP 地址由路由器 DHCP 服务器动态分配 在不同情况下可能需要设置静态 IP 地址 例如配置端口转发或运行媒体服务器 使用 DHCP 配置静态
  • 如何在 Bash 中将 stderr 重定向到 stdout

    将命令的输出重定向到文件或通过管道将其传输到另一个命令时 您可能会注意到错误消息打印在屏幕上 在 Bash 和其他 Linux shell 中 当程序执行时 它使用三个标准 I O 流 每个流都由一个数字文件描述符表示 0 stdin 标准
  • 如何在 Ubuntu 18.04 上安装 PHP

    在本教程中 我们将介绍在 Ubuntu 18 04 上安装发行版的默认 PHP 7 2 并将其与 Nginx 和 Apache 集成所需的步骤 我们还将向您展示如何安装 PHP 7 1 和 7 3 大多数流行的 PHP 框架和应用程序包括W
  • 如何在 Ubuntu 18.04 上使用 Apache 安装 Joomla

    Joomla 是最流行的开源内容管理系统之一 为数十万个网站提供支持 它是用 PHP 编写的 包含大量可以通过免费和高级扩展和主题进行扩展的功能 使用 Joomla 您可以轻松构建电子商务商店 个人网站 社交网站或博客 在本教程中 我们将解
  • 如何在 Ubuntu 20.04 上安装和使用 Wine

    Wine 是一个开源兼容层 允许您在类 Unix 操作系统 例如 Linux FreeBSD 和 macOS 上运行 Windows 应用程序 Wine是 Wine Is Not an Emulator 的缩写 它将 Windows 系统调
  • 如何在 CentOS 8 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它允许您免费拨打在线音频和视频电话 并以经济实惠的价格拨打全球手机和固定电话 本文介绍如何在 CentOS 8 上安装最新版本的 Skype 在 CentOS 上安装 Skype Skype 不是
  • 如何在 Ubuntu 20.04 上安装 Ruby

    Ruby 是当今最流行的编程语言之一 它具有优雅的语法 注重简单性和生产力 Ruby 是强大的 Ruby on Rails 框架背后的语言 在本教程中 我们将向您展示在 Ubuntu 20 04 上安装 Ruby 的三种不同方法 来自标准
  • 如何在 CentOS 7 上安装 Node.js 和 npm

    Node js 是一个跨平台的 JavaScript 运行时环境 允许服务器端执行 JavaScript 代码 Node js 主要用于后端 但作为全栈和前端解决方案也很受欢迎 npm 是 Node Package Manager 的缩写
  • 如何在 CentOS 8 上安装 Tomcat 9

    Apache Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 它是当今世界上采用最广泛的应用程序和 Web 服务器之一 Tomcat 使用简
  • 如何在 Debian 9 上安装 Asterisk

    Asterisk 是最流行且广泛采用的用于构建通信应用程序的开源框架 它被世界各地的个人 小型企业 大型企业和政府使用 Asterisk 功能包括电话会议 语音邮件 等待音乐 呼叫转接 呼叫排队 呼叫录音 数据库存储 检索等等 在本教程中
  • 如何在 CentOS 7 上安装 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款关于放置方块并进行冒险的沙盒视频游戏 在本教程中 我们将完成在 CentOS 7 上安装和配置 Minecraft 服务器所需的步骤 我们将使用 Systemd 来运行 Minecraft 服
  • 如何在 CentOS 7 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • Linux 中的 Tar 命令(创建和提取档案)

    The tar命令通过将一组文件转换为存档来创建 tar 文件 它还可以提取 tar 存档 显示存档中包含的文件列表 向现有存档添加其他文件以及各种其他类型的操作 Tar 最初设计用于创建档案以将文件存储在磁带上 这就是它得名 的原因 Ta