質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

Q&A

解決済

8回答

23816閲覧

なぜlinuxではtar.xzが使われるのか

keik

総合スコア9

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

1グッド

0クリップ

投稿2018/08/14 07:44

linuxサーバーの構築について勉強している際に疑問に思うことがあったので質問させていただきます。

アプリケーションのインストール中、tar.xzという形式のファイルをたくさん扱いました。
ggったら、tarでアーカイブしてxzで圧縮しているとありましたが、なぜこの形式が使われているのでしょうか。

windowsのPCではzipと7zが使われることがほとんどで、これらの形式だとアーカイブも圧縮も同時にでき、tar.xzよりも優れているように思えます。
ggると、zipは32bitの場合4Gまでしか扱えないからと書いてありましたが、32bitの比率は4%だと見た覚えがあるし、4Gを超えるアプリケーションはほとんどないため明確な答えではないと思いました。

正直解凍が二度手間で面倒なので、理由が慣習とかならやめてもらいたいです...
ご教授の程よろしくお願い致します。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答8

0

ベストアンサー

調べてみたら非常に興味深かったので書いてみました。ご参考に慣ればと思います。

windowsのPCではzipと7zが使われることがほとんどで、これらの形式だとアーカイブも圧縮も同時にでき、tar.xzよりも優れているように思えます。

7zとxzについて起源を調べてみたところ、両方共LZMAというアルゴリズムを利用しているようです。7zのほうが先に開発されており、元はwindows向けに作られていたようです。その後、Linuxの移植版を作られてxzが現れたようです。 Linux版が後なのは、LZMAライブラリがMicrosoft windowsの特有な機能を使用されており移植に時間がかかったためのようです。

そのため、機能面においては特に大きな優劣は無いのではないかと思われます。

正直解凍が二度手間で面倒なので、理由が慣習とかならやめてもらいたいです...

おそらくこの部分が優劣に感じているのではないかと思いますが、手間の部分については他の方が記載している通りコマンドで1回で回答できます。

その他で、linuxでtarを使う理由ですが、tarはTape Archievesの略になります。そのため、あまり馴染みがないかもしれませんが、ファイルをテープに記録するためのコマンドです。ディレクトリはHDD向けの構造なのですが、バラバラに存在する可能性があります。ただ、テープはシーケンシャルにデータを入れる必要があるため整列する必要があり、そのコマンドがtarでした。

Archievesしてから圧縮するという機能が付加されて、tar.gzやtar.bz2のような圧縮形式をサポートするようになってきました。その流れで、xzという圧縮形式も現れたのでサポートされたのだと思います。

Appendix

投稿2018/08/14 10:26

編集2018/08/14 10:31
kuni-n

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2018/08/15 01:42 編集

歴史的に、tar は古いです。 Unixと共にありました。正確なところは把握していませんが、30年以上前から。で、そのツール類は、そのまま、Linuxに引き継がれていると。tarは、kinu-nさんが書かれているように、複数のファイルを一つにする機能しかありません。(tar ボールと呼ばれた事もあると思った) unixの思想として、複雑な機能をサポートせずに、シンプルな機能を組み合わせて使いましょう、があります。これに従うと、ファイルのアーカイブ機能と圧縮を一つにするのは邪道となります。 (現実にはサポートしてるみたいですが)
guest

0

正直解凍が二度手間で面倒なので

最近のtarコマンドでは、xzの解凍も込みで一気に行うことができます。

sh

1tar Jxf /path/to/filename.tar.xf

投稿2018/08/14 08:11

maisumakun

総合スコア145123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ZIPを避ける積極的な理由は今となってはないと思います。
ただ、tar.* からZIPに乗り換える積極的な理由も無いです。

tar + 圧縮 のメリットとしては、今あるファイルを圧縮方法だけtar内部にノータッチで変更できるくらいでしょうか。そんなに大きなメリットではないですが。
(昔)foo.tar.Z → foo.tar.gz → foo.tar.bz2 → foo.tar.xz(今)

tarコマンドとzipコマンドの機能に差異はあると思いますが(unzipで解凍時に元のオーナー属性でって出来ましたっけ?)、それはコマンドの差異であってファイルフォーマットの問題じゃないし。

正直解凍が二度手間で面倒なので、

については、Linuxでつかうgnu tarであれば、解凍の時は自動判別するので、
tar xf foo.tar.xz
のようにすれば解凍についてはよしなにやってくれます。gnu tarでなくても圧縮オプションを指定すれば1コマンドでOKです。
圧縮の時は、
tar cJf foo.tar.xz bar
のようにオプションで圧縮の種類を指定する必要があります(xzはJ)。拡張子を見てやってくれるといいのですが、現時点ではそうでないようです。

投稿2018/08/14 13:24

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、Windowsの標準の圧縮フォーマットを「zip」とするならば
Linuxにおいて一般的な圧縮フォーマットは「gzip」だと思います。。。

というのは置いておきまして

なぜlinuxではtar.xzが使われるのか

そもそも、この考え方が正しくありません。
所謂「Linux使い」は、状況や用途によって圧縮フォーマットを使い分けます。

・高速に圧縮したい
・伸長時間を短くしたい
・圧縮効率を優先したい
・OSに負荷をかけずに圧縮/伸長したい
・特に希望は無いから一般的なやつでいいや

等々。。。

圧縮フォーマットには種類によって得手不得手があるので、目的に併せて使い分けてください。
※似たような特性の圧縮フォーマットもゴロゴロあるので、そこらへんは利用者の好みです。

投稿2018/08/14 08:14

編集2018/08/14 08:17
k-nishiyama

総合スコア240

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

tarで1ファイルに纏めてから、huffmanなりスライド辞書で圧縮した方が圧縮率が良いからでは?

1ファイル毎で圧縮するより、ファイル間での近似性も圧縮率に貢献するはずです。

投稿2018/08/14 15:08

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正直解凍が二度手間で面倒なので、理由が慣習とかならやめてもらいたいです

今どきのtarコマンドは一発で展開できるようです。これは特にデメリットというわけではないですね。

従来の類似ツールより圧縮率が高いアーカイブファイルが作れるそうですから、それはそれでメリットであることは間違いないでしょう。

個人的には使い慣れているgzip等からの乗り換えの必要性はあまり感じませんし、質問者氏もそうなのでしょうが、いやなら使わなければいいだけのことだし、展開だけなら前述の通りコマンド一発なのだから、シェルスクリプトなりエイリアスなり作っておけば、手間などかかりません。

投稿2018/08/14 08:09

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

tar コマンド自身で .xz を圧縮・展開させることもできますし、そもそも Unix 文化では「パイプ使ってつなげりゃいいじゃん」なので、ワンライナーで書けないわけでもなし。
配布用としてみたときには、圧縮時の時間より、ファイルサイズの縮小と展開速度の方がより重要だという話でしょう。

あと、Linux のカーネルイメージの圧縮用にも採用されているのが、Linux での普及率の高さに繋がっているのだと思います。

投稿2018/08/14 09:39

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考情報

  • tar.xzファイルの圧縮・解凍方法

https://qiita.com/SkyLaptor/items/03c4de7437caa455b237

  • Linux で tar.xz 形式のファイルを解凍する

https://qiita.com/ymaru/items/87fbc4e68f5995d3964c

  • ウィキベディア xz (ファイルフォーマット)

https://ja.wikipedia.org/wiki/Xz_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)

...
xzの登場以前より使われていたgzip、bzip2と比較すると、圧縮時にはより多くの時間とメモリを消費するが、圧縮率では概ね優位で、また伸張速度もgzipより多少遅いがbzip2よりは速い傾向にある。このことから、特にアーカイブ配布用途として、tarとgzipを組み合わせて作成する場合[1]やtarとbzip2を組み合わせる場合[2]と並んで採用され、bzip2を置き換えるケースも増えている。
...

  • マルチスレッド環境でのtar

http://mickey-happygolucky.hatenablog.com/entry/2018/04/21/011811

投稿2018/08/14 08:35

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問