※当サイトの記事には、広告・プロモーションが含まれます。

入れ子になったディレクトリ階層の.gzファイルの展開(解凍)でハマった件

www.itmedia.co.jp

⇧ amazing...

入れ子になったディレクトリ階層の.gzファイルの展開(解凍)でハマった件

ネットにある情報を鵜呑みにして泥沼にハマりました。

職場の方に助けてもらって解決できたものの、モヤモヤしていたので調べてみることに。

ちなみに、

engineeringnote.hateblo.jp

dev.classmethod.jp

⇧ 上記サイト様を参考にしてたんですが、よくよく考えると、.gzファイルでディレクトリを含むようなケースがあるのを想定できていなかったという...

で、調べてみたところ、

xtech.nikkei.com

 gz方式はLinuxでよく使われるファイル圧縮・展開方式である。圧縮ファイルには「.gz」という拡張子が付く。

 展開には「gunzip」または「gzip -d」を用いる。

【 ファイルを圧縮・展開する(拡張子.gz,.tar.gz) 】 | 日経クロステック(xTECH)

 gzipでは,複数のファイルを圧縮して1つのファイルにまとめることはできない。ディレクトリごと圧縮して1ファイルにまとめたい場合は,tar でパッケージした後,gzipで圧縮する。

【 ファイルを圧縮・展開する(拡張子.gz,.tar.gz) 】 | 日経クロステック(xTECH)

⇧ とあり、拡張子が「.gz」のファイルに、ディレクトリを含めることができるかできないかについては言及がありませんと。

で、更に調べてみると、

tutorials.tinkink.net

-r引数を追加すると、圧縮と同様に再帰的にディレクトリを解凍できます。これにより、ディレクトリ内のすべてのファイルも解凍されます。

sh
# dirnameおよびサブディレクトリ内のすべてのgzip圧縮ファイルを解凍する
gzip -dr dirname

Linux環境でのファイルの圧縮と解凍方法 | チュートリアル | Tinkink

⇧ とありますと、ただ、これだと、入れ子になったディレクトリ構造で拡張子が「.gz」ファイルってのを実現できない...

そもそも、入れ子になったディレクトリ階層の.gzファイルってどう作ってるんだ?

調べた感じ、拡張子が「.gz」のファイルで、ディレクトリを含めるのってどうやって実現してるんだ?って思ってたら、

stackoverflow.com

⇧ 上記のような話が出てました。

なるほど、

.tar.gz

.gz

って流れらしい。

なのですが、できるのか?

community.hpe.com

qiita.com

⇧ できるらしい。

tarを使う場所には、気を付ける必要があるようで、

qiita.com

⇧ 上記サイト様が詳しいです。

tar.gzを経てからの.gzへの圧縮、つまり、二段階圧縮を試してみる

で、tar.gzを経てからの.gzへの圧縮、つまり、二段階圧縮を試してみた。

tar cvbf 20 - [圧縮したい対象] | gzip > [圧縮後のファイル名]    

⇧ できました。

再現できた

で、gzipで展開せずに中身を確認すると、

ディレクトリの部分が、数字の羅列になってしまうのかがわからんのだけど、よく分からん数字が並んでしまっているという...

で、こいつをWindows側で「7zip」で展開すると、

上手いこと展開されない...

で、上記の展開されたファイルを更に展開すると、

⇧ 展開されました。

う~む、「圧縮」と「展開」分からな過ぎる...

毎度モヤモヤ感が半端ない...

今回はこのへんで。