当前位置: 首页 > 科技观察

如何在Linux中创建和管理存档

时间:2023-03-18 16:43:29 科技观察

简而言之,存档是包含一系列文件和/或目录的单个文件。存档文件通常用于在本地或通过Internet传输,或作为一系列文件和目录的备份副本,允许您使用一个文件(如果压缩,将小于所有文件的总和)。同样,档案用于软件应用程序打包。这个单个文件可以很容易地压缩以便于传输,并且存档中的文件保留其原始结构和权限。我们可以使用tar实用程序在存档中创建、列出和提取文件。用tar生成的存档通常称为“tar文件”、“tar存档”或“tarball”(因为所有存档文件合并为一个文件)。本教程介绍如何使用tar创建、列出和提取存档内容。所有三个操作都使用两个常用选项-f和-v:使用-f指定存档文件的名称,并使用-v(“详细”)选项使tar在处理文件时输出文件名。虽然-v选项不是必需的,但它允许您查看tar操作的进度。在本教程的以下部分中,将涵盖3个主题:1.创建档案;2.列出档案内容;3.提取存档内容。此外,我们将通过回答6个有关存档管理的实际问题来结束本教程。您从本教程中学到的知识对于执行与网络安全和云技术相关的任务至关重要。1.创建归档文件要使用tar创建归档文件,请使用-c(“创建”)选项,然后使用-f选项指定要创建的归档文件的名称。通常的做法是使用扩展名为.tar的名称,例如my-backup.tar。请注意,除非另有特别说明,否则本文其余部分中使用的所有命令和参数均采用小写形式。请记住,在您的终端上输入本文中的命令时,您不需要在每个命令行的开头输入$提示符。输入要存档的文件名作为参数;如果要创建包含所有文件及其子目录的存档,请提供目录名称作为参数。要归档项目目录的内容,请输入:$tar-cvfproject.tarproject该命令将创建一个名为project.tar的归档文件,其中包含项目目录的所有内容,而原始目录project将保持不变。可以使用-z选项压缩档案,它产生的输出与创建未压缩的档案然后使用gzip压缩它产生的输出相同,但它节省了额外的步骤。要从项目目录创建一个project.tar.gz存档,请输入:$tar-zcvfproject.tar.gzproject此命令将创建一个包含项目目录所有内容的project.tar.gz存档,而原始的目录项目将保持不变。注意:使用-z选项时,应该使用.tar.gz扩展名,而不是.tar扩展名,这表明它是压缩的。虽然不是必需的,但这是一种很好的做法。gzip不是唯一的压缩形式,还有bzip2和xz。当我们看到扩展名为.xz的文件时,我们知道该文件是使用xz压缩的,而扩展名为.bz2的文件是使用bzip2压缩的。由于不再维护bzip2,我们将远离它并专注于xz。使用xz压缩时,需要更长的时间。然而,等待通常是值得的,因为压缩效果要好得多,这意味着存档通常比其他压缩形式要小。更好的是,不同压缩形式在解压缩或提取文件方面没有太大区别。下面我们将看到一个使用tar压缩文件时如何使用xz的示例:$tar-Jcvfproject.tar.xzproject我们只是将gzip的-z选项转换为大写的-J表示xz。以下是显示压缩形式之间差异的一些输出:如您所见,xz的压缩时间最长。但是,它在减小文件大小方面做得最好,因此值得等待。文件越大,压缩效果越好。2.列出存档内容要列出不解压缩的tar存档的内容,请使用-t选项。要列出project.tar的内容,请输入:$tar-tvfproject.tar此命令列出project.tar存档的内容。-v和-t选项一起使用,输出每个文件的权限和修改时间,以及文件名。这与ls命令在使用-l选项时使用的格式相同。要列出project.tar.gz存档的内容,请输入:$tar-tzvfproject.tar.gz3.从存档中提取要提取(解压缩)tar存档的内容,请使用-x(“提取”)选项。要提取project.tar档案的内容,请输入:$tar-xvfproject.tar此命令会将project.tar档案的内容提取到当前目录。如果存档是压缩的,通常带有.tar.gz或.tgz扩展名,请包含“-z”选项。要提取project.tar.gz存档的内容,请输入:$tar-zxvfproject.tar.gz注意:如果当前目录中存在与存档内容同名的文件或子目录,则在提取时存档,这些文件或子目录将被覆盖。如果您不知道存档中包含哪些文件,请考虑先查看存档的内容。在解压缩之前列出??档案内容的另一个原因是确定档案的内容是否包含在目录中。如果不是,并且当前目录包含许多不相关的文件,那么您可能会将它们与从存档中提取的文件混淆。要将文件提取到它们自己的目录中,请创建一个新目录,将存档移动到该目录,然后您可以将文件提取到新目录中。常见问题解答现在我们已经了解了如何创建存档以及列出和提取其内容,我们可以继续讨论Linux专业人员经常被问到的9个实际问题。我可以在不解压缩的情况下向tarball添加内容吗?不幸的是,一旦文件被压缩,就无法再向其中添加内容。您需要解压缩或提取其内容,然后编辑或添加内容,最后再次压缩文件。如果文件很小,这个过程不会花费很长时间,否则请稍等片刻。是否可以在不解压缩的情况下删除存档的内容?这取决于压缩时使用的tar版本。较新版本的tar支持-delete选项。例如,假设您在存档中有file1和file2,您可以使用以下命令从file.tar中删除它们:$tar-vffile.tar--deletefile1file2删除目录dir1:$tar-ffile.tar--deletedir1/*压缩和归档有什么区别?查看存档和zip之间区别的最简单方法是查看其解压缩后的大小。归档文件时,多个文件合并为一个。因此,如果我们归档10个100kb的文件,我们最终会得到一个100kb的文件。如果您压缩这些文件,您最终可能会得到一个只有几kb或接近100kb的文件。如何压缩归档文件?如上所述,您可以使用带有cvf选项的tar命令来创建和归档文件。要压缩存档,您有两个选择:通过压缩程序(如gzip)运行存档,或者在使用tar命令时使用压缩选项。最常见的压缩标志是-z表示gzip,-j表示bzip,-J表示xz。例如:$gzipfile.tar或者,我们可以在使用tar命令时使用压缩标志,以下命令使用gzip标志z:$tar-cvzffile.tar/some/directory如何创建多个目录的归档文件和/或文件一次?一次归档多个文件并不少见。一次归档多个文件和目录并不像您想的那么难,您只需要提供多个文件或目录作为tar的参数:$tar-cvzffile.tarfile1file2file3或$tar-cvzffile.tar/some/directory1/some/directory2如何在创建存档时跳过目录和/或文件?你可能会遇到这样一种情况,你想要归档一个目录或文件,而不是所有文件,在这种情况下你可以使用--exclude选项:$tar--exclude'/some/directory'-cvffile.tar/home/user示例中,/home/user目录中除/some/directory之外的所有内容都将被归档。重要的是将--exclude选项放在源和目标之前,并将要排除的文件或目录括在单引号中。总结tar命令可用于通过显示不需要的文件来创建备份或压缩文件。在更改文件之前备份文件是一种很好的做法。如果更改后某些内容没有按预期工作,您可以随时恢复到旧文件。压缩不再使用的文件有助于保持系统清洁并减少磁盘空间使用。还有其他用于归档或压缩的实用程序,但tar因其多功能性、易用性和流行性而脱颖而出。