我收到了一个在嵌入式 Linux 设备上创建的 Tar/GZipped 文件。
如果我运行类似tar zxf myFile.tgz
. 该文件提取到类似的东西
dir1/
file1
file2
dir2/
file1
file2
subdir1/
file1
...但我怀疑具体的文件内容和布局无关紧要。
当我尝试在 Windows 中提取同一个文件时(使用 7-Zip 或 WinZip),我得到:
myFile/
<extensionless file with temp-looking name e.g. "logs_xqUt09">
myFile
当.tgz
我收到的本身被命名时,顶级目录恰好被命名为“”可能是相关的myFile.tgz
......但我不确定这是否只是巧合。
我浏览了一下 SuperUser,发现了一些相关问题,其中一个表明7-Zip.tgz
比 WinZip 更好地处理文件,但显然不是这种情况。
有谁知道什么给?为什么 a.tgz
在 Linux 而不是 Windows 下可以完全提取?可能有什么解决方法?
如果我将该无扩展名文件重命名为一个.tar
文件,则该 .tar
文件可以使用 7-Zip 和/或 WinZip 提取。
我仍然想了解发生了什么,是否有不涉及手动文件重命名的解决方法,因为理想情况下.tgz
,嵌入式设备交付的原始文件应该可以在 Linux 和 Windows 下提取。
tgz (tar.gz) 是一个二级归档。首先将文件流保存为 tar。其次,tar 文件使用 gzip 压缩。如果你解压缩一个 gzip 文件,你将始终得到一个文件 - 在 7-zip 的情况下具有临时名称的无扩展名文件。这个文件可以用 tar 或 7-zip 再次“解压”。
除了 tar 流包含在 Windows 文件系统上丢失的文件权限、组 ID + 用户 ID、xattrs 或 selinux 上下文(可能还有符号链接)等元数据之外,由于文件名中的 ascii 字符集(除了
/
在 linux 中允许的所有字符)。通常将 tar 存档提取到 Windows 磁盘是没有意义的为什么?
因为微软还没有/还没有内置它。
只有在操作系统中添加了必要的指令以告诉它如何处理文件时,操作系统才支持文件类型。
.tag.gz 在 *nix 系统中的使用历史悠久,但 .zip 和其他包在 Windows 中更受欢迎,因此在 Windows 中没有任何支持这些包类型的真正需求。
除此之外我们无法回答,因为我们不是编写 Windows 的人。
在
.tgz
Linux 系统上完全可提取,因为tar
它是由 AT&T 贝尔实验室专门为 Unix 和类 Unix 操作系统构建的。并且gzip
只是一种在开发多年后开发的压缩算法tar
。同样的原理适用于一个操作系统支持但另一个操作系统不支持的所有其他文件扩展名。例如,您不能
.dmg
在 Windows 上使用文件,也不能.msi
在 macOS 上使用 a。大多数人
tar.gz
在 Linux/Unix 上选择该选项是因为它tar
存储了 Unix 文件属性和权限,并整合了所有要归档的文件。然后gzip
用于压缩它。该
zip
选项存储 MSDOS 文件属性,然后单独压缩每个文件,然后将每个单独的文件合并为一个文件。根据您的情况,您可以使用
zip
命令代替在嵌入式设备上对文件进行 taring 和 gzip 压缩。