組み込み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で抽出可能であることが理想的です。
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ディスクに抽出することは意味がありません
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
コマンドを使用できます。
なぜ?
マイクロソフトはまだそれを組み込んでいない/組み込んでいないからです。
ファイルタイプは、ファイルの処理方法を指示するために必要な命令がOSに追加された場合にのみ、OSでサポートされます。
.tag.gzは* nixシステムで長い間使用されてきましたが、.Zipやその他のパッケージはWindowsではるかに人気があり、Windowsでこれらのパッケージタイプをサポートするという実際の需要はありませんでした。
それ以上は、私たちはWindowsを書いている人ではないので、答えることができません。