web-dev-qa-db-ja.com

Linuxボックスでtgzを開くことができるのに、Windowsでは開かないのはなぜですか?

組み込みLinuxデバイスで作成されたTar/GZippedファイルを受け取りました。

tar zxf myFile.tgzのようなものを実行すると、Linuxデスクトップでファイルを完全に正常に抽出できます。ファイルは次のように抽出されます

dir1/
  file1
  file2
dir2/
  file1
  file2
  subdir1/
    file1

...しかし、特定のファイルの内容とレイアウトは無関係だと思います。

これと同じファイルをWindowsで(7-ZipまたはWinZipを使用して)抽出しようとすると、次のようになります。

  myFile/
    <extensionless file with temp-looking name e.g. "logs_xqUt09">

私が受け取った.tgzそれ自体である場合、その最上位ディレクトリにたまたま「myFile」という名前が付けられていることはおそらく関連性があります。 myFile.tgz...という名前ですが、それが偶然に過ぎないことは確かではありません。

SuperUserを少し閲覧したところ、いくつかの関連する問題が見つかりました。そのうちの1つは、 7-Zip がWinZipよりも.tgzファイルを処理することを示唆していますが、この状況では明らかにそうではありません。

誰かが何を与えるか知っていますか? .tgzがLinuxで完全に抽出できるのに、Windowsでは抽出できないのはなぜですか?どのような回避策がありますか?

その拡張子のないファイルの名前を.tarファイルに変更すると、that.tarファイルは7-Zipおよび/またはWinZip。

何が起こっているのかを理解したいのですが、手動でファイルの名前を変更しない回避策がある場合は、組み込みデバイスによって配信される元の.tgzファイルがLinuxおよびWindowsで抽出可能であることが理想的です。

3
StoneThrow

tgz(tar.gz)は2レベルのアーカイブです。まず、ファイルのストリームがtarとして保存されます。次に、tarファイルがgzipで圧縮されます。 gzipファイルを抽出すると、常に1つのファイル(7-Zipの場合は一時的な名前の拡張子のないファイル)が取得されます。このファイルは、tarまたは7-Zipで「解凍」できます。

tarストリームには、ファイルのアクセス許可、グループID +ユーザーID、xattrs、selinuxコンテキスト(およびシンボリックリンク)などのメタデータが含まれていますが、これらはWindowsファイルシステムで失われます。Linuxファイルの解凍は、ファイル名のascii文字セットが原因で失敗または問題が発生する可能性があります( /を除くすべての文字はLinuxで許可されています)。通常、tarアーカイブをWindowsディスクに抽出することは意味がありません

4
alecxs

tarはAT&T Bell LaboratoriesによってUnixおよびUnixライクなオペレーティングシステム用に特別に構築されたため、Linuxシステムで完全に抽出可能な.tgz。そして、gzipは、tarが開発されてから数年後に開発された単なる圧縮アルゴリズムです。

同じ理論的根拠は、あるOSではサポートされているが別のOSではサポートされていない他のすべてのファイル拡張子にも当てはまります。たとえば、Windowsでは.dmgファイルを使用できず、macOSでは.msiを使用できません。

tarはUnixファイルの属性と権限を保存し、アーカイブするすべてのファイルを統合するため、ほとんどの人はLinux/Unixでtar.gzオプションを選択します。次に、gzipを使用して圧縮します。

Zipオプションは、MSDOSファイル属性を格納し、各ファイルを個別に圧縮してから、個々のファイルを1つのファイルに統合します。

状況に応じて、組み込みデバイスでファイルを風袋引きしてgzipする代わりに、代わりにZipコマンドを使用できます。

1
DrZoo

なぜ?

マイクロソフトはまだそれを組み込んでいない/組み込んでいないからです。

ファイルタイプは、ファイルの処理方法を指示するために必要な命令がOSに追加された場合にのみ、OSでサポートされます。

.tag.gzは* nixシステムで長い間使用されてきましたが、.Zipやその他のパッケージはWindowsではるかに人気があり、Windowsでこれらのパッケージタイプをサポートするという実際の需要はありませんでした。

それ以上は、私たちはWindowsを書いている人ではないので、答えることができません。

1
music2myear