tgz は Linux ボックスでは開けるのに、Windows では開けないのはなぜですか?

tgz は Linux ボックスでは開けるのに、Windows では開けないのはなぜですか?

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

Linuxデスクトップで次のようなコマンドを実行すると、ファイルは問題なく抽出できます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を少し閲覧し、いくつかの関連する問題を見つけました。そのうちの1つは、7-ジップ.tgzWinZip よりもファイルをうまく処理しますが、この状況ではそうではないようです。

何が原因か知っている人はいませんか? .tgzLinux では完全に抽出できるのに、Windows ではできないのはなぜでしょうか? 回避策はあるでしょうか?

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

何が起こっているのか、また手動でファイル名を変更する必要のない回避策があるかどうかも知りたいです。理想的には、.tgz組み込みデバイスによって配信された元のファイルは Linux と Windows で抽出可能であるべきだからです。

答え1

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

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

答え2

なぜ?

なぜなら、Microsoft はまだそれを組み込んでいないからです。

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

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

それ以上の質問については、私たちは Windows を開発しているわけではないので、お答えできません。

答え3

AT&T ベル研究所によって Unix および Unix 系オペレーティング システム専用に構築された.tgzため、Linux システムで完全に抽出可能です。また、開発されてから数年後に開発された圧縮アルゴリズムです。targziptar

ある OS ではサポートされているが、別の OS ではサポートされていない他のすべてのファイル拡張子についても同じことが言えます。たとえば、.dmgWindows ではファイルを使用できず、macOS ではファイルを使用できません.msi

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

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

状況によっては、組み込みデバイス上でファイルを tar 圧縮して gzip 圧縮する代わりに、zipコマンドを使用することもできます。

関連情報