圧縮展開系のコマンドのまとめ

  • 90
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

MacBook AirのSSDが突然お亡くなりになったとか流れてきて怖いなぁって思って、しこしことDropboxに移動しています。
Premium万歳。
Bitcasaも魅力的。
でも、金欠なので涙目。
そんなものはなかった。
とりあえずほぼお目見えすることのないファイルは圧縮して容量節減しようと思いたって、このエントリを書きました。
tarでまとめたほうが大量のファイルをちまちま転送するよりも効率的ですしね。

オプションとかの物忘れ激しいので自分用のユーティリティとしてまとめておきます。

圧縮・解凍の体系

大層なものでもないですが、基本的に以下の体系を持っています。
少なくとも私の使い道ではですが・・・。

  • Linux系
    基本的にtarの合わせ技で使うことが多い。
    • gzip: 一般的な圧縮率。
    • bzip2: より強力な圧縮。時間がかかる。バックアップとしてはこれが一般的とのこと。
    • xz: LZMA2 アルゴリズムを使用する。7z の親戚。 Linux のカーネルソースとか巨大なソース等の圧縮に採用されている。最近のディストリならたいてい標準で入っている。圧縮率は bzip2 よりも優位だがより CPU、メモリリソースを消費する。
      正直時間がかかる割に bzip2 よりサイズがでかくなるパターンがたまにあるので注意。
      最近流行にのって単発の圧縮ならこれをよく使ってる。
    • zip: あんまり使わないなあ。。。
  • Windows系
    • zip: 普通はこれで圧縮解凍する。
    • 7z
      • 何より圧縮率が高くて重宝する。
      • 機密情報を扱ったりするときはAES暗号をかまして、自己解凍書庫形式にして送る。
        お客様の環境に 7-Zip (7z 形式を扱えるアーカイバ)が入っていないことはよくあるので、 exe にします。 拡張子そのままだとリジェクトされる可能性が高いので拡張子に細工します(正直禁じ手)。 正直zipのencryptionは心配です。
    • lzh: 過去の遺物。ネット黎明期に異常に流行った。

2GB超のファイルとかは7z形式で取り扱います。
仮想マシンとかバックアップしようとして以前ハマったのですが、2GB超のファイルをzipで圧縮しようとすると書庫がかなり高い確率でぶっ壊れます。

Windowsだと巨大なファイルを扱う形式としてわりと自分の中で一般的なのですが、Linuxだとtarでいったんファイルを全部まとめてからgzipで圧縮かけるので、書庫は壊れなかった気がするのですが、どうなんでしょう。
少なくともtarでファイルの一覧を固めるだけでは壊れることはないようです。

さてさて、本題のTipsに参りたいと思います。

フォルダとかまるごと

c をつける。

圧縮 tar.gzip

tar cvzf hogehoge.tar.gz hogehoge/

めっちゃ圧縮 tar.bz2

以前は y がbzip2圧縮のトリガーになっていましたが、今は j になっています。

tar cvjf hogehoge.tar.bz2 hogehoge/

超めっちゃ圧縮 tar.xz

tar cvJf hogehoge.tar.xz hogehoge/

解凍

x をつける。

gzip

tar xvzf hogehoge.tar.gz

bzip2

tar xvjf hogehoge.tar.bz2

xz

tar xvJf hogehoge.tar.xz

単一ファイル

圧縮

それなりの圧縮gzip

  • 元ファイルを残さない版
gzip result.txt
  • 元ファイルを残したい版

-c オプションを付ける。

gzip -c result.txt >result.txt.gz

もっと圧縮bzip2

gzipより少し時間がかかる。

  • 元ファイルを残さない版
bzip2 マイノート-201309141059.enex
  • 元ファイルを残したい版

-c オプションを付ける。

bzip2 -c マイノート-201309141059.enex

展開

gzip

  • 元ファイルを残さない版
gzip -d result.txt.gz
  • 元ファイルを残す版
gzip -dc result.txt.gz >result.txt

bzip2

-d (decompress)です。

  • 元ファイルを残さない版
bzip2 -d result.txt.bz2
  • 元ファイルを残す版
bzip2 -dc result.txt.bz2 >result.txt

以上です。

適宜メモりたいものが出たらここに追加していきます。

Tips

圧縮解凍テスト用のファイルの準備の仕方。

適当な内容のファイルを準備する私なりのやり方。
そのまま待ってるとディスクを全部使いきるまで終わらないので Ctrl+C で終了させてくださいw

  • ひたすらyを書き込む
yes > result.txt
  • ランダムなバイナリを書き込む

ほんとにランダムなバイナリなので圧縮とか意味ないかも。

cat /dev/urandom > result2.txt

参考サイト

  1. Linuxコマンド集 - 【 bzip2 】 ファイルを圧縮・展開する(拡張子.bz2):ITpro
  2. xz 形式で圧縮展開する(tar 使う版) - 戦場のプログラマー