为什么 tgz 在 Linux 盒子上可以打开,但在 Windows 上却打不开?

Sto*_*row 3 windows linux zip windows-7 tar

我收到了在嵌入式 Linux 设备上创建的 Tar/GZipped 文件。

如果我运行类似tar zxf myFile.tgz. 该文件提取为类似的内容

dir1/
  file1
  file2
dir2/
  file1
  file2
  subdir1/
    file1
Run Code Online (Sandbox Code Playgroud)

...但我怀疑具体的文件内容和布局无关紧要。

当我尝试在 Windows 中提取同一文件(使用 7-Zip 或 WinZip)时,我得到:

  myFile/
    <extensionless file with temp-looking name e.g. "logs_xqUt09">
Run Code Online (Sandbox Code Playgroud)

myFile.tgz我收到的目录本身被命名时,该顶级目录恰好被命名为“”,这可能是相关的myFile.tgz……但我不确定这是否只是巧合。

我浏览了一下 SuperUser,发现了一些相关问题,其中之一表明7-Zip处理.tgz文件的效果比 WinZip 更好,但显然不是在这种情况下。

有谁知道什么给?为什么 a.tgz在 Linux 下可以完全提取,而在 Windows 下却不行?可能有哪些解决方法?

如果我将该无扩展名文件重命名为一个.tar文件,则可以使用 7-Zip 和/或 WinZip 提取该文件。 .tar

我仍然想了解发生了什么,以及是否有一种不涉及手动文件重命名的解决方法,因为理想情况下,.tgz嵌入式设备提供的原始文件应该可以在 Linux 和 Windows 下提取。

ale*_*cxs 5

tgz (tar.gz) 是一个两级存档。首先,文件流被保存为 tar。其次,使用 gzip 压缩 tar 文件。如果您提取 gzip 文件,您将始终得到一个文件 - 如果是 7-zip,则该文件具有临时名称,无扩展名。该文件可以使用 tar 或再次使用 7-zip 来“解压”。

除了 tar 流包含文件权限、组 id + 用户 id、xattrs 或 selinux 上下文(可能还有符号链接)等元数据(这些元数据在 Windows 文件系统上会丢失)之外,由于文件名中的 ascii 字符集(除/linux 允许的所有字符)。通常将 tar 存档解压到 Windows 磁盘是没有意义的