当前位置: 首页 > 知识库问答 >
问题:

Tar创建一个意外大的文件

皇甫才良
2023-03-14

我想这里可能有人知道发生了什么,但本质上我必须做的是获取一个目录,并创建一个省略了两级子目录(root/1/2)的tar文件。考虑到它需要在许多平台上工作,我认为最简单的方法是查找并清理出那个目录,这给了我一个文件列表。

但是,然后我将该文件列表通过管道传输到xargs tar rvf命令中,结果文件出来的内容类似于33gb。我尝试将查找输出到一个文件,并使用tar-T将该文件作为输入,它仍然输出到大约33gb,如果我对整个目录进行直接tar(不遗漏任何内容),它会出现在我期望的6-ish gb处。

你有什么想法吗?或者如何补救?我真的需要弄清楚这一点,我猜这与给它提供一个文件列表有关,而不是让它只给一个目录加上tar,但不确定如何解决这个问题。

共有2个答案

古明煦
2023-03-14

当您在文件列表中指定一个目录时,< code>tar会打包该目录以及其中的所有文件。如果您随后单独列出目录中的文件,它会(再次)打包这些文件。如果您列出子目录,它会再次打包每个子目录的内容。诸如此类。

如果您要执行文件列表,请确保它确实是文件列表并且不包括目录。

find . -type f ...

省略号可能是查找选项以消除子目录中的文件,也可能是消除它们的grep-v。请注意,-name通常只匹配名称的最后一个组件。GNU查找!-path'*/subdir/*'或允许您根据路径而不仅仅是名称来消除文件的变体:

find . -type f ! -path './root/1/2/*' -print
钱和安
2023-03-14

您的查找命令将返回目录以及文件

考虑使用查找来查找目录并排除一些目录

tar cvf /path/to/archive.tar $(find suite -type d ! -name 'suite/tmp/Shared/*')
 类似资料:
  • 我正在遵循那个教程(https://www.baeldung.com/spring-boot-minikube)我想在yaml文件(simple-crud-dpl.yaml)中创建Kubernetes部署: 但是当我运行<code>时,kubectl创建了一个-f简单的crud dpl。yaml我得到: 我使用的是最新版本的库贝特: 我也在本地使用minikube,正如教程中所描述的。部署和服务前

  • 问题内容: 我已经在React文档中读到,“如果”类型语句不能在JSX代码中使用,由于JSX呈现到javascript中的方式,它无法正常工作。 但是,有什么理由为什么实现“ if”组件不是一个好主意?从我的初始测试来看,它似乎工作正常,并且使我想知道为什么不经常这样做? 我的部分意图是让反应开发尽可能地基于标记,并且使用尽可能少的javascript。在我看来,这种方法更像是一种“数据驱动”方法

  • 问题内容: 我一直在阅读和谷歌搜索,但似乎找不到这个简单的答案。 我有一个读取文件的功能,但是如果文件不存在,则会出现混乱。我想做的是一个函数,该函数在读取之前会检查文件是否存在,如果不存在,则会创建一个空文件。这就是我所拥有的。 问题答案: 不要尝试先检查是否存在,因为如果同时创建了文件,那么您将面临一场竞赛。您可以打开带有标志的文件以创建该文件(如果不存在):

  • 在我的Linux机器上,我希望创建某个文件夹的.tar.bz2文件。一旦我将自己放入该文件夹(在终端中),我在终端命令行中键入什么来将压缩文件夹放入我机器的主目录? 假设我在文件夹中 /home/user/folder.在文件夹“文件夹”中有几个文件(txt、. c等)。如何压缩该类型的文件夹。tar.bz2并将其放在我的 /home目录中? 在/home/user/folder中,我尝试了< c

  • 我想提取Unix tar xvf/home/test/group中的tar文件。tar和提取后得到一个文件夹组,其中包含xls、pdf和txt文件列表。 我怎样才能提取内容的group.tar /home/test/list的xls, pdf文件没有创建组文件夹。 任何特定的命令可用或必须跟随复制和移动?? 谢啦!

  • 我有一个tar存档,其中包含一些其他tar存档。下面的示例完美地提取了primary.tar文件,但我在访问其中的其他.tar文件时遇到了问题。 这将返回以下内容: 所以我可以访问tar1.tar文件对象。但是,我无法弄清楚如何从tar1.tar中获取成员或内容。