linuxサーバーの構築について勉強している際に疑問に思うことがあったので質問させていただきます。
アプリケーションのインストール中、tar.xzという形式のファイルをたくさん扱いました。
ggったら、tarでアーカイブしてxzで圧縮しているとありましたが、なぜこの形式が使われているのでしょうか。
windowsのPCではzipと7zが使われることがほとんどで、これらの形式だとアーカイブも圧縮も同時にでき、tar.xzよりも優れているように思えます。
ggると、zipは32bitの場合4Gまでしか扱えないからと書いてありましたが、32bitの比率は4%だと見た覚えがあるし、4Gを超えるアプリケーションはほとんどないため明確な答えではないと思いました。
正直解凍が二度手間で面倒なので、理由が慣習とかならやめてもらいたいです...
ご教授の程よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア112
0
正直解凍が二度手間で面倒なので
最近のtar
コマンドでは、xzの解凍も込みで一気に行うことができます。
sh
1tar Jxf /path/to/filename.tar.xf
投稿2018/08/14 08:11
総合スコア145941
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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
総合スコア85783
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
まず、Windowsの標準の圧縮フォーマットを「zip」とするならば
Linuxにおいて一般的な圧縮フォーマットは「gzip」だと思います。。。
というのは置いておきまして
なぜlinuxではtar.xzが使われるのか
そもそも、この考え方が正しくありません。
所謂「Linux使い」は、状況や用途によって圧縮フォーマットを使い分けます。
・高速に圧縮したい
・伸長時間を短くしたい
・圧縮効率を優先したい
・OSに負荷をかけずに圧縮/伸長したい
・特に希望は無いから一般的なやつでいいや
等々。。。
圧縮フォーマットには種類によって得手不得手があるので、目的に併せて使い分けてください。
※似たような特性の圧縮フォーマットもゴロゴロあるので、そこらへんは利用者の好みです。
投稿2018/08/14 08:14
編集2018/08/14 08:17総合スコア240
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
tarで1ファイルに纏めてから、huffmanなりスライド辞書で圧縮した方が圧縮率が良いからでは?
1ファイル毎で圧縮するより、ファイル間での近似性も圧縮率に貢献するはずです。
投稿2018/08/14 15:08
総合スコア2826
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
正直解凍が二度手間で面倒なので、理由が慣習とかならやめてもらいたいです
今どきのtarコマンドは一発で展開できるようです。これは特にデメリットというわけではないですね。
従来の類似ツールより圧縮率が高いアーカイブファイルが作れるそうですから、それはそれでメリットであることは間違いないでしょう。
個人的には使い慣れているgzip等からの乗り換えの必要性はあまり感じませんし、質問者氏もそうなのでしょうが、いやなら使わなければいいだけのことだし、展開だけなら前述の通りコマンド一発なのだから、シェルスクリプトなりエイリアスなり作っておけば、手間などかかりません。
投稿2018/08/14 08:09
総合スコア13692
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
tar コマンド自身で .xz を圧縮・展開させることもできますし、そもそも Unix 文化では「パイプ使ってつなげりゃいいじゃん」なので、ワンライナーで書けないわけでもなし。
配布用としてみたときには、圧縮時の時間より、ファイルサイズの縮小と展開速度の方がより重要だという話でしょう。
あと、Linux のカーネルイメージの圧縮用にも採用されているのが、Linux での普及率の高さに繋がっているのだと思います。
投稿2018/08/14 09:39
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参考情報
- tar.xzファイルの圧縮・解凍方法
https://qiita.com/SkyLaptor/items/03c4de7437caa455b237
- Linux で tar.xz 形式のファイルを解凍する
https://qiita.com/ymaru/items/87fbc4e68f5995d3964c
- ウィキベディア xz (ファイルフォーマット)
...
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
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/15 01:42 編集