gpt4 book ai didi

linux - .tar 文件的结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:01 31 4
gpt4 key购买 nike

我正在尝试运行一些基准测试,这些基准测试会输入一个 tar 文件。

现在tar文件里面有一个runme.sh,需要修改,文件夹必须重新做一个.tar。

原始基准测试有效,但修改后的基准测试无效。我认为这是文件格式的问题。

注意:我的修改没有造成问题。如果我只是解压缩工作 tar 并在不修改的情况下再次 tar,它就不起作用。令人惊讶的是,新文件的大小发生了变化。

我试过的:

  1. file 命令用于工作和非工作 tar 文件。两者都返回相同的POSIX tar archive

  2. 尝试运行命令 tar cvf folder_name.tar folder_name/不起作用。

什么有效:

我在 Ubuntu (14.04) 上,双击 tar,直接编辑我想要的文件并更新它。这可行,但不是一个可行的解决方案,因为我有大量文件并且我想编写一个脚本来自动化它。

它如何使用 GUI 的屏幕截图:

enter image description here

最佳答案

原始 tar 文件是否包含顶级目录名称?从你的截图看不像。如果您使用顶级目录重新创建 tar 文件,如您尝试的第 2 点所示,结构将不相同,并且任何程序试图使用 tar 文件都将无法解析它。

你如何测试“如果我只是解压缩工作 tar 并在不修改的情况下再次 tar,它不起作用。”在 GUI 中还是在 shell 中?如果在 shell 中 - 您使用的确切命令是什么?

在 shell 中,您可以使用命令 tar -tf filename.tar 获取 tarball 的内容。如果它列出的所有文件都以相同的文件夹名称开头,那么您的 tarball 包含一个顶级目录。如果它只是列出各种文件和子目录,则不会。 (不是可憎的 Tarball,但如果您将它们用于任何需要它的地方,您将不得不应付。)

我猜如果您对原始 tar 文件和修改后的非工作 tar 文件执行此操作,结果会有所不同。

如果你有/需要一个 tarball 没有顶级目录,下面应该在 shell 中工作:

$ mkdir workdir
$ cd workdir
$ tar -xf ../tarball.tar
<edit your file however you like>
$ tar -cf ../tarball-new.tar *
$ cd ..
$ rm -r workdir

如果您有/需要一个包含顶级目录的压缩包,以下内容就足够了:

$ tar -xf ../tarball.tar
$ cd toplevel_directory
<edit your file however you like>
$ cd ..
$ tar -cf tarball-new.tar toplevel_directory
$ rm -r toplevel_directory

编辑:很高兴它对您有用。当然,重点是 tar 包括它存储的文件的路径,而不仅仅是文件名。因此,如果您需要文件的平面列表,则需要在包含这些文件的目录中运行 tar,将所有文件作为参数提供给 tar。如果您尝试走上一层的捷径,只指定要打包的目录名称,tar 会将目录名称包含在存档中。

关于linux - .tar 文件的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952190/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com