為什麼 tgz 在 Linux 盒子上可以打開,但在 Windows 上卻打不開?

為什麼 tgz 在 Linux 盒子上可以打開,但在 Windows 上卻打不開?

我收到了在嵌入式 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-拉鍊處理.tgz文件比 WinZip 更好,但顯然不是在這種情況下。

有人知道什麼給?為什麼 a.tgz在 Linux 下可以完全提取,在 Windows 下卻不行?可能有哪些解決方法?

如果我將該無副檔名檔案重新命名為.tar,那麼 .tar檔案可使用 7-Zip 和/或 WinZip 提取。

我仍然想了解發生了什麼,以及是否有一種不涉及手動檔案重命名的解決方法,因為理想情況下,.tgz嵌入式裝置提供的原始檔案應該可以在 Linux 和 Windows 下提取。

答案1

tgz (tar.gz) 是一個兩級存檔。首先,文件流被儲存為 tar。其次,使用 gzip 壓縮 tar 檔。如果您提取 gzip 文件,您將始終獲得一個文件 - 如果是 7-zip,則該文件具有臨時名稱,無擴展名。該檔案可以使用 tar 或再次使用 7-zip 來「解壓縮」。

除了tar 流包含檔案權限、群組id + 使用者id、xattrs 或selinux 上下文(可能還有符號連結)等元資料(這些元資料在Windows 檔案系統上會遺失)之外,由於檔案名稱中的ascii 字元集(除/linux 允許的)。通常將 tar 存檔解壓縮到 Windows 磁碟是沒有意義的

答案2

為什麼?

因為微軟還沒有內建它。

僅當向作業系統添加必要的指令以告訴作業系統如何處理檔案時,作業系統才支援檔案類型。

.tag.gz 在 *nix 系統中有著悠久的使用歷史,但 .zip 和其他軟體包在 Windows 中更受歡迎,因此在 Windows 中並沒有任何支援這些軟體包類型的真正需求。

除此之外我們無法回答,因為我們不是寫 Windows 的人。

答案3

.tgz在 Linux 系統上完全可提取,因為它tar是由 AT&T 貝爾實驗室專門為 Unix 和類 Unix 作業系統構建的。它gzip只是一種壓縮演算法,是在開發多年後才開發tar的。

同樣的原理也適用於一個作業系統支援但另一個作業系統不支援的所有其他檔案副檔名。例如,您不能.dmg在 Windows 上使用文件,也不能.msi在 macOS 上使用 a。

大多數人選擇tar.gzLinux/Unix 上的選項,因為tar儲存 Unix 檔案屬性和權限,並合併所有要歸檔的檔案。然後gzip用於壓縮它。

zip選項儲存 MSDOS 文件屬性,然後單獨壓縮每個文件,然後將每個單獨的文件合併為一個文件。

根據您的情況,您可以使用該zip命令,而不是在嵌入式設備上對檔案進行皮重和 gzip 壓縮。

相關內容