标签 tar 下的文章

OpenAI 呼吁像监管原子能一样监管超级智能

OpenAI 呼吁设立监管超级智能的国际机构,“我们最终可能需要类似于国际原子能机构的东西来进行超级智能方面的努力;任何超过一定能力(或计算等资源)门槛的努力都需要接受国际权威机构的检查,要求进行审计,测试是否符合安全标准,对部署程度和安全级别进行限制等等”。他们认为,“这样一个机构应专注于减少存在的风险,而不是那些应该留给各个国家的问题,例如定义人工智能应该被允许说什么。”

消息来源:OpenAI
老王点评:作为站在超级人工智能最前沿的公司,他们一定是意识到失控的人工智能有多可怕才提出这样的倡议。希望不要等到第一颗 AI “核弹” 爆炸后才去想办法监管吧。至于这样的倡议中,有没有其它附带的目的,那是另外一件事。

Windows 11 将原生支持 tar、7-zip、rar、gz 等压缩格式

微软称,“已经增加了对其他存档格式的原生支持,包括 tar、7-zip、rar、gz 和许多其他使用 libarchive 开源项目的格式”。你将不再需要安装第三方应用程序来访问这些文件。这些支持计划在本周晚些时候推出。

消息来源:The Verge
老王点评:Windows 用户等了几十年,然而,现在人们对压缩文件的需求,已经不是当年那小水管网络的时代了。所以,微软现在推出算是“亡羊补牢”呢,还是多此一举?

微软为 Windows 11 提供 AI “个人助理”

微软宣布为 Windows 11 增加一个 Copilot 人工智能助手。与在 Edge、Office 应用甚至 GitHub 中看到的 Copilot 侧边栏一样,Windows Copilot 将直接集成到 Windows 11 中,并可在所有应用和程序中从任务栏打开和使用。它可以总结你在应用程序中查看的内容,改写它,甚至解释它。它看起来与必应聊天中的对话框非常相似,所以你可以问它一般的问题和你通常可能会问搜索引擎的事情。

消息来源:The Verge
老王点评:真是不能给微软机会,以抓住 AI 的机会,立刻就全面转身了。相比之下,谷歌、苹果、亚马逊等在这次新的变化浪潮中就显得有点手忙脚乱,应接不暇。

回音

  • 昨天报道了在中国的桌面搜索市场上,必应超过了百度的份额多达 10 个百分点。StatCounter 表示 统计数据异常,他们正在调查。我认为,显然这和他们的样本偏差有关。

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

我们可以使用 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 选项。

例如,假设归档文件中有 file1file2,可以使用以下命令将它们从 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

或者

$ tar -cvzf file.tar /some/directory1 /some/directory2

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

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

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

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

总结

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

资源

如果你想了解有关 Linux 的更多信息,强烈建议阅读以下文章和教程:

关于作者

Matt Zand 是一位创业者,也是 3 家科技创业公司的创始人: DC Web MakersCoding BootcampsHigh School Technology Services。他也是 使用 Hyperledger Fabric 进行智能合约开发 一书的主要作者。他为 Hyperledger、以太坊和 Corda R3 平台编写了 100 多篇关于区块链开发的技术文章和教程。在 DC Web Makers,他领导了一个区块链专家团队,负责咨询和部署企业去中心化应用程序。作为首席架构师,他为编码训练营设计和开发了区块链课程和培训项目。他拥有马里兰大学工商管理硕士学位。在区块链开发和咨询之前,他曾担任一些初创公司的高级网页和移动应用程序开发和顾问、天使投资人和业务顾问。你可以通过以下这个网址和他取得联系: https://www.linkedin.com/in/matt-zand-64047871

Kevin Downs 是 Red Hat 认证的系统管理员和 RHCSA。他目前在 IBM 担任系统管理员,负责管理数百台运行在不同 Linux 发行版上的服务器。他是编码训练营的首席 Linux 讲师,并且他会讲授 5 个自己的课程


via: https://www.linux.com/news/how-to-create-and-manage-archive-files-in-linux-2/

作者:LF Training 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Linux 系统上有很多可以用于压缩文件的工具,但它们的表现并不都是一样的,也不是所有的压缩效果都是一样的。在这篇文章中,我们比较其中的五个工具。

在 Linux 上有不少用于压缩文件的命令。最新最有效的一个方法是 xz,但是所有的方法都有节省磁盘空间和维护备份文件供以后使用的优点。在这篇文章中,我们将比较这些压缩命令并指出显著的不同。

tar

tar 命令不是专门的压缩命令。它通常用于将多个文件拉入一个单个的文件中,以便容易地传输到另一个系统,或者将文件作为一个相关的组进行备份。它也提供压缩的功能,这就很有意义了,附加一个 z 压缩选项能够实现压缩文件。

当使用 z 选项为 tar 命令附加压缩过程时,tar 使用 gzip 来进行压缩。

就像压缩一组文件一样,你可以使用 tar 来压缩单个文件,尽管这种操作与直接使用 gzip 相比没有特别的优势。要使用 tar 这样做,只需要使用 tar cfz newtarfile filename 命令来标识要压缩的文件,就像标识一组文件一样,像这样:

$ tar cfz bigfile.tgz bigfile
            ^            ^
            |            |
            +- 新的文件  +- 将被压缩的文件

$ ls -l bigfile*
-rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile
-rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz

注意,文件的大小显著减少了。

如果你愿意,你可以使用 tar.gz 扩展名,这可能会使文件的特征更加明显,但是大多数的 Linux 用户将很可能会意识到与 tgz 的意思是一样的 – targz 的组合来显示文件是一个压缩的 tar 文件。在压缩完成后,你将同时得到原始文件和压缩文件。

要将很多文件收集在一起并在一个命令中压缩出 “tar ball”,使用相同的语法,但要指定要包含的文件为一组,而不是单个文件。这里有一个示例:

$ tar cfz bin.tgz bin/*
          ^         ^
          |         +-- 将被包含的文件
          + 新的文件

zip

zip 命令创建一个压缩文件,与此同时保留原始文件的完整性。语法像使用 tar 一样简单,只是你必需记住,你的原始文件名称应该是命令行上的最后一个参数。

$ zip ./bigfile.zip bigfile
updating: bigfile (deflated 79%)
$ ls -l bigfile bigfile.zip
-rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile
-rw-rw-r-- 1 shs shs  21606889 Apr 16 11:19 bigfile.zip

gzip

gzip 命令非常容易使用。你只需要键入 gzip,紧随其后的是你想要压缩的文件名称。不像上述描述的命令,gzip 将“就地”“加密”文件。换句话说,原始文件将被“加密”文件替换。

$ gzip bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs  21606751 Apr 15 17:57 bigfile.gz

bzip2

像使用 gzip 命令一样,bzip2 将在你选择的文件“就地”压缩,不留下原始文件。

$ bzip bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs  18115234 Apr 15 17:57 bigfile.bz2

xz

xz 是压缩命令团队中的一个相对较新的成员,在压缩文件的能力方面,它是一个领跑者。像先前的两个命令一样,你只需要将文件名称提供给命令。再强调一次,原始文件被就地压缩。

$ xz bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz

对于大文件来说,你可能会注意到 xz 将比其它的压缩命令花费更多的运行时间,但是压缩的结果却是非常令人赞叹的。

对比

大多数人都听说过“大小不是一切”。所以,让我们比较一下文件大小以及一些当你计划如何压缩文件时的问题。

下面显示的统计数据都与压缩单个文件相关,在上面显示的示例中使用 bigfile。这个文件是一个大的且相当随机的文本文件。压缩率在一定程度上取决于文件的内容。

大小减缩率

当比较时,上面显示的各种压缩命产生下面的结果。百分比表示压缩文件与原始文件的比较效果。

-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile
------------------------------------------------------
-rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2    ~17%
-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz     ~21%
-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz    ~21%
-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz     ~13%
-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip    ~21%

xz 命令获胜,最终只有压缩文件 13% 的大小,但是所有这些压缩命令都相当显著地减少原始文件的大小。

是否替换原始文件

bzip2gzipxz 命令都用压缩文件替换原始文件。tarzip 命令不替换。

运行时间

xz 命令似乎比其它命令需要花费更多的时间来“加密”文件。对于 bigfile 来说,大概的时间是:

命令      运行时间
tar       4.9 秒
zip       5.2 秒
bzip2    22.8 秒
gzip      4.8 秒
xz       50.4 秒

解压缩文件很可能比压缩时间要短得多。

文件权限

不管你对压缩文件设置什么权限,压缩文件的权限将基于你的 umask 设置,但 bzip2 除外,它保留了原始文件的权限。

与 Windows 的兼容性

zip 命令创建的文件可以在 Windows 系统以及 Linux 和其他 Unix 系统上使用(即解压),而无需安装其他工具,无论这些工具可能是可用还是不可用的。

解压缩文件

解压文件的命令与压缩文件的命令类似。在我们运行上述压缩命令后,这些命令用于解压缩 bigfile

  • tar: tar xf bigfile.tgz
  • zip: unzip bigfile.zip
  • gzip: gunzip bigfile.gz
  • bzip2: bunzip2 bigfile.gz2
  • xz: xz -d bigfile.xzunxz bigfile.xz

自己运行压缩对比

如果你想自己运行一些测试,抓取一个大的且可以替换的文件,并使用上面显示的每个命令来压缩它 —— 最好使用一个新的子目录。你可能需要先安装 xz,如果你想在测试中包含它的话。这个脚本可能更容易地进行压缩,但是可能需要花费几分钟完成。

#!/bin/bash

# 询问用户文件名称
echo -n "filename> "
read filename

# 你需要这个,因为一些命令将替换原始文件
cp $filename $filename-2

# 先清理(以免先前的结果仍然可用)
rm $filename.*

tar cvfz ./$filename.tgz $filename > /dev/null
zip $filename.zip $filename > /dev/null
bzip2 $filename
# 恢复原始文件
cp $filename-2 $filename
gzip $filename
# 恢复原始文件
cp $filename-2 $filename
xz $filename

# 显示结果
ls -l $filename.*

# 替换原始文件
mv $filename-2 $filename

via: https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Tarball 提供了一种在 Linux 系统上备份和管理一组文件的通用方法。请按照以下提示了解如何创建它们,以及从中提取和删除单个文件。

“tarball” (LCTT 译注:国内也常称为“tar 包”)一词通常用于描述备份一组选择的文件并将它们打包在一个文件中的一种文件格式。该名称来自 .tar 文件扩展名和 tar 命令,它用于将文件打包到一个文件中,有时还会压缩该文件,使其在移动到其它系统时更小。

tarball 通常用于备份个人或系统文件来创建存档,特别是在进行可能需要撤消的更改之前。例如,Linux 系统管理员通常会在更改应用之前创建包含一系列配置文件的 tarball,以防必须撤消这些更改。从 tarball 中解压文件通常比在备份中搜索文件快。

如何在 Linux 上创建 tarball

使用如下命令,你可以在单条命令中创建 tarball 并压缩它。

$ tar -cvzf PDFs.tar.gz *.pdf

其结果是一个压缩文件(gzip 压缩的),其中包含了当前目录中的所有 PDF 文件。当然,压缩是可选的。一个稍微简单的只是将 PDF 文件打包成未压缩 tarball 的命令:

$ tar -cvf PDFs.tar *.pdf

注意,选项中的 z 将文件变成压缩的。 c 表明创建文件,v(详细)表示你在命令运行时需要一些反馈。如果你不想查看列出的文件,请忽略 v

另一个常见的命名约定是给压缩的 tarball 命名成 .tgz 而不是双扩展名 .tar.gz,如下所示:

$ tar cvzf MyPDFs.tgz *.pdf

如何从 tarball 中解压文件

要从 gzip 压缩包中解压所有文件,你可以使用如下命令:

$ tar -xvzf file.tar.gz

如果使用 .tgz 命名约定,该命令将如下所示:

$ tar -xvzf MyPDFs.tgz

要从 gzip 包中解压单个文件,你可以执行几乎相同的操作,只需添加文件名:

$ tar -xvzf PDFs.tar.gz ShenTix.pdf
ShenTix.pdf
ls -l ShenTix.pdf
-rw-rw-r-- 1 shs shs 122057 Dec 14 14:43 ShenTix.pdf

如果未压缩 tarball,你甚至可以从 tarball 中删除文件。例如,如果我们想从 PDFs.tar.gz 中删除我们上面解压过的文件,我们会这样做:

$ gunzip PDFs.tar.gz
$ ls -l PDFs.tar
-rw-rw-r-- 1 shs shs 10700800 Dec 15 11:51 PDFs.tar
$ tar -vf PDFs.tar --delete ShenTix.pdf
$ ls -l PDFs.tar
-rw-rw-r-- 1 shs shs 10577920 Dec 15 11:45 PDFs.tar

请注意,我们在删除 ShenTix.pdf 后,缩小了一点 tarball 文件占用的空间。如果我们想要,我们可以再次压缩文件:

$ gzip -f PDFs.tar
ls -l PDFs.tar.gz
-rw-rw-r-- 1 shs shs 10134499 Dec 15 11:51 PDFs.tar.gzFlickr / James St. John

丰富的命令行选项使得 tarball 使用起来简单方便。


via: https://www.networkworld.com/article/3328840/linux/working-with-tarballs-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在我们之前的教程中,我们讨论了如何使用 gzip 和 bzip2 压缩和解压缩文件。在本教程中,我们将学习如何在 Linux 归档文件。归档和压缩有什么不同吗?你们中的一些人可能经常认为这些术语有相同的含义。但是,这两者完全不同。归档是将多个文件和目录(相同或不同大小)组合成一个文件的过程。另一方面,压缩是减小文件或目录大小的过程。归档通常用作系统备份的一部分,或者将数据从一个系统移至另一个系统时。希望你了解归档和压缩之间的区别。现在,让我们进入主题。

归档文件和目录

归档文件和目录最常见的程序是:

  1. tar
  2. zip

这是一个很大的话题,所以,我将分两部分发表这篇文章。在第一部分中,我们将看到如何使用 tar 命令来归档文件和目录。

使用 tar 命令归档文件和目录

Tar 是一个 Unix 命令,代表 Tape Archive(磁带归档)。它用于将多个文件(相同或不同大小)组合或存储到一个文件中。在 tar 实用程序中有 4 种主要的操作模式。

  1. c – 从文件或目录中建立归档
  2. x – 提取归档
  3. r – 将文件追加到归档
  4. t – 列出归档的内容

有关完整的模式列表,参阅 man 手册页。

创建一个新的归档

为了本指南,我将使用名为 ostechnix 的文件夹,其中包含三种不同类型的文件。

$ ls ostechnix/
file.odt image.png song.mp3

现在,让我们为 ostechnix 目录创建一个新的 tar 归档。

$ tar cf ostechnix.tar ostechnix/

这里,c 标志指的是创建新的归档,f 是指定归档文件。

同样,对当前工作目录中的一组文件创建归档文件,使用以下命令:

$ tar cf archive.tar file1 file2 file 3

提取归档

要在当前目录中提取归档文件,只需执行以下操作:

$ tar xf ostechnix.tar

我们还可以使用 C 标志(大写字母 C)将归档提取到不同的目录中。例如,以下命令将归档文件提取到 Downloads 目录中。

$ tar xf ostechnix.tar -C Downloads/

或者,转到 Downloads 文件夹并像下面一样提取其中的归档。

$ cd Downloads/
$ tar xf ../ostechnix.tar

有时,你可能想要提取特定类型的文件。例如,以下命令提取 “.png” 类型的文件。

$ tar xf ostechnix.tar --wildcards "*.png"

创建 gzip 和 bzip 格式的压缩归档

默认情况下,tar 创建归档文件以 .tar 结尾。另外,tar 命令可以与压缩实用程序 gzipbzip 结合使用。文件结尾以 .tar 为扩展名使用普通 tar 来归档文件,文件以 tar.gz.tgz 结尾使用 gzip 归档并压缩文件,文件以 tar.bz2.tbz 结尾使用 bzip 归档并压缩。

首先,让我们来创建一个 gzip 归档:

$ tar czf ostechnix.tar.gz ostechnix/

或者:

$ tar czf ostechnix.tgz ostechnix/

这里,我们使用 z 标志来使用 gzip 压缩方法压缩归档文件。

你可以使用 v 标志在创建归档时查看进度。

$ tar czvf ostechnix.tar.gz ostechnix/
ostechnix/
ostechnix/file.odt
ostechnix/image.png
ostechnix/song.mp3

这里,v 指显示进度。

从一个文件列表创建 gzip 归档文件:

$ tar czf archive.tgz file1 file2 file3

要提取当前目录中的 gzip 归档文件,使用:

$ tar xzf ostechnix.tgz

要提取到其他文件夹,使用 -C 标志:

$ tar xzf ostechnix.tgz -C Downloads/

现在,让我们创建 bzip 归档。为此,请使用下面的 j 标志。

创建一个目录的归档:

$ tar cjf ostechnix.tar.bz2 ostechnix/

$ tar cjf ostechnix.tbz ostechnix/

从一个列表文件中创建归档:

$ tar cjf archive.tar.bz2 file1 file2 file3

$ tar cjf archive.tbz file1 file2 file3

为了显示进度,使用 v 标志。

现在,在当前目录下,让我们提取一个 bzip 归档。这样做:

$ tar xjf ostechnix.tar.bz2

或者,提取归档文件到其他目录:

$ tar xjf ostechnix.tar.bz2 -C Downloads

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

这是 tar 命令的另一个最酷的功能。要一次创建多个目录或文件的 gzip 归档文件,使用以下文件:

$ tar czvf ostechnix.tgz Downloads/ Documents/ ostechnix/file.odt

上述命令创建 DownloadsDocuments 目录和 ostechnix 目录下的 file.odt 文件的归档,并将归档保存在当前工作目录中。

在创建归档时跳过目录和/或文件

这在备份数据时非常有用。你可以在备份中排除不重要的文件或目录,这是 –exclude 选项所能帮助的。例如你想要创建 /home 目录的归档,但不希望包括 DownloadsDocumentsPicturesMusic 这些目录。

这是我们的做法:

$ tar czvf ostechnix.tgz /home/sk --exclude=/home/sk/Downloads --exclude=/home/sk/Documents --exclude=/home/sk/Pictures --exclude=/home/sk/Music

上述命令将对我的 $HOME 目录创建一个 gzip 归档,其中不包括 DownloadsDocumentsPicturesMusic 目录。要创建 bzip 归档,将 z 替换为 j,并在上例中使用扩展名 .bz2

列出归档文件但不提取它们

要列出归档文件的内容,我们使用 t 标志。

$ tar tf ostechnix.tar
ostechnix/
ostechnix/file.odt
ostechnix/image.png
ostechnix/song.mp3

要查看详细输出,使用 v 标志。

$ tar tvf ostechnix.tar
drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/
-rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt
-rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png
-rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3

追加文件到归档

文件或目录可以使用 r 标志添加/更新到现有的归档。看看下面的命令:

$ tar rf ostechnix.tar ostechnix/ sk/ example.txt

上面的命令会将名为 sk 的目录和名为 exmple.txt 添加到 ostechnix.tar 归档文件中。

你可以使用以下命令验证文件是否已添加:

$ tar tvf ostechnix.tar
drwxr-xr-x sk/users 0 2018-03-26 19:52 ostechnix/
-rw-r--r-- sk/users 9942 2018-03-24 13:49 ostechnix/file.odt
-rw-r--r-- sk/users 36013 2015-09-30 11:52 ostechnix/image.png
-rw-r--r-- sk/users 112383 2018-02-22 14:35 ostechnix/song.mp3
drwxr-xr-x sk/users 0 2018-03-26 19:52 sk/
-rw-r--r-- sk/users 0 2018-03-26 19:39 sk/linux.txt
-rw-r--r-- sk/users 0 2018-03-26 19:56 example.txt

TL;DR

创建 tar 归档:

  • 普通 tar 归档: tar -cf archive.tar file1 file2 file3
  • Gzip tar 归档: tar -czf archive.tgz file1 file2 file3
  • Bzip tar 归档: tar -cjf archive.tbz file1 file2 file3

提取 tar 归档:

  • 普通 tar 归档: tar -xf archive.tar
  • Gzip tar 归档: tar -xzf archive.tgz
  • Bzip tar 归档: tar -xjf archive.tbz

我们只介绍了 tar 命令的基本用法,这些对于开始使用 tar 命令足够了。但是,如果你想了解更多详细信息,参阅 man 手册页。

$ man tar

好吧,这就是全部了。在下一部分中,我们将看到如何使用 Zip 实用程序来归档文件和目录。

干杯!


via: https://www.ostechnix.com/how-to-archive-files-and-directories-in-linux-part-1/

作者:SK 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Q:我想找出所有的 *.doc 文件并将它们创建成一个 tar 包,然后存储在 /nfs/backups/docs/file.tar 中。是否可以在 Linux 或者类 Unix 系统上查找并 tar 打包文件?

find 命令用于按照给定条件在目录层次结构中搜索文件。tar 命令是用于 Linux 和类 Unix 系统创建 tar 包的归档工具。

How to find and tar files on linux unix

让我们看看如何将 tar 命令与 find 命令结合在一个命令行中创建一个 tar 包。

Find 命令

语法是:

find /path/to/search -name "file-to-search" -options
## 找出所有 Perl(*.pl)文件 ##
find $HOME -name "*.pl" -print
## 找出所有 *.doc 文件 ##
find $HOME -name "*.doc" -print
## 找出所有 *.sh(shell 脚本)并运行 ls -l 命令 ##
find . -iname "*.sh" -exec ls -l {} +

最后一个命令的输出示例:

-rw-r--r-- 1 vivek vivek 1169 Apr  4  2017 ./backups/ansible/cluster/nginx.build.sh
-rwxr-xr-x 1 vivek vivek 1500 Dec  6 14:36 ./bin/cloudflare.pure.url.sh
lrwxrwxrwx 1 vivek vivek   13 Dec 31  2013 ./bin/cmspostupload.sh -> postupload.sh
lrwxrwxrwx 1 vivek vivek   12 Dec 31  2013 ./bin/cmspreupload.sh -> preupload.sh
lrwxrwxrwx 1 vivek vivek   14 Dec 31  2013 ./bin/cmssuploadimage.sh -> uploadimage.sh
lrwxrwxrwx 1 vivek vivek   13 Dec 31  2013 ./bin/faqpostupload.sh -> postupload.sh
lrwxrwxrwx 1 vivek vivek   12 Dec 31  2013 ./bin/faqpreupload.sh -> preupload.sh
lrwxrwxrwx 1 vivek vivek   14 Dec 31  2013 ./bin/faquploadimage.sh -> uploadimage.sh
-rw-r--r-- 1 vivek vivek  778 Nov  6 14:44 ./bin/mirror.sh
-rwxr-xr-x 1 vivek vivek  136 Apr 25  2015 ./bin/nixcraft.com.301.sh
-rwxr-xr-x 1 vivek vivek  547 Jan 30  2017 ./bin/paypal.sh
-rwxr-xr-x 1 vivek vivek  531 Dec 31  2013 ./bin/postupload.sh
-rwxr-xr-x 1 vivek vivek  437 Dec 31  2013 ./bin/preupload.sh
-rwxr-xr-x 1 vivek vivek 1046 May 18  2017 ./bin/purge.all.cloudflare.domain.sh
lrwxrwxrwx 1 vivek vivek   13 Dec 31  2013 ./bin/tipspostupload.sh -> postupload.sh
lrwxrwxrwx 1 vivek vivek   12 Dec 31  2013 ./bin/tipspreupload.sh -> preupload.sh
lrwxrwxrwx 1 vivek vivek   14 Dec 31  2013 ./bin/tipsuploadimage.sh -> uploadimage.sh
-rwxr-xr-x 1 vivek vivek 1193 Oct 18  2013 ./bin/uploadimage.sh
-rwxr-xr-x 1 vivek vivek   29 Nov  6 14:33 ./.vim/plugged/neomake/tests/fixtures/errors.sh
-rwxr-xr-x 1 vivek vivek  215 Nov  6 14:33 ./.vim/plugged/neomake/tests/helpers/trap.sh

Tar 命令

创建 /home/vivek/projects 目录的 tar 包,运行:

$ tar -cvf /home/vivek/projects.tar /home/vivek/projects

结合 find 和 tar 命令

语法是:

find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} \;

或者

find /dir/to/search/ -name "*.doc" -exec tar -rvf out.tar {} +

例子:

find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" \;

或者

find $HOME -name "*.doc" -exec tar -rvf /tmp/all-doc-files.tar "{}" +

这里,find 命令的选项:

  • -name "*.doc":按照给定的模式/标准查找文件。在这里,在 $HOME 中查找所有 *.doc 文件。
  • -exec tar ... :对 find 命令找到的所有文件执行 tar 命令。

这里,tar 命令的选项:

  • -r:将文件追加到归档末尾。参数与 -c 选项具有相同的含义。
  • -v:详细输出。
  • -f out.tar : 将所有文件追加到 out.tar 中。

也可以像下面这样将 find 命令的输出通过管道输入到 tar 命令中:

find $HOME -name "*.doc" -print0 | tar -cvf /tmp/file.tar --null -T - 

传递给 find 命令的 -print0 选项处理特殊的文件名。--null-T 选项告诉 tar 命令从标准输入/管道读取输入。也可以使用 xargs 命令:

find $HOME -type f -name "*.sh" | xargs tar cfvz /nfs/x230/my-shell-scripts.tgz

有关更多信息,请参阅下面的 man 页面:

$ man tar
$ man find
$ man xargs
$ man bash

作者简介:

作者是 nixCraft 的创造者,是一名经验丰富的系统管理员,也是 Linux 操作系统/Unix shell 脚本培训师。他曾与全球客户以及 IT、教育、国防和太空研究以及非营利部门等多个行业合作。在 Twitter、Facebook 和 Google+ 上关注他。


via: https://www.cyberciti.biz/faq/linux-unix-find-tar-files-into-tarball-command/

作者:Vivek Gite 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出