よく使う圧縮/解凍コマンドをまとめ(zip,gzip,tar)
圧縮/解凍コマンドって結構使うことが多いのですが、使い方を忘れることが多いので、よく使うコマンドをまとめてみました。
tar.gzで圧縮(tarアーカイブしてgzipで圧縮)
tar.gzで圧縮する場合は、「tar」でファイルをまとめた(アーカイブした)ものを、パイプ(|)で「gzip」に渡して圧縮します。
「tar」でアーカイブに含まれるファイル名を情報として表示させたい場合は、オプション「v」を指定してバーボーズモードにします。
アーカイブされるファイル名を表示する(バーボーズモード)
$ tar cvf - dirname | gzip -c > dirname.tar.gz
アーカイブされるファイル名を表示しない(通常モード)
$ tar cf - dirname | gzip -c > dirname.tar.gz
tarのオプション
命令: 以下の中から必ず1つだけ指定しなければならない。
c tarファイルを新しく作る
x tarファイルを展開する
t tarファイルの内容を表示する
r tarファイルに追加する。z や Z オプションと同時には使えない。オプション:
v バーボーズモード。処理内容を詳しく表示する
パーミッションなどの詳細な情報が表示されるため、はじめのうちはアーカイブ作成・展開時に tar cvf や tar xvf などと v オプションを付けたくなるかもしれない。しかし、慣れてきたら v オプションを指定しないようにしよう。f tarファイルを指定する
UNIXの部屋 コマンド検索 tar ( BSD Linux)
一見、毎回 f オプションを指定する意味がないように思えるが、本来 tar はテープドライブに書き出すコマンドなので、f でアーカイブ名を指定しないとテープドライブのデバイス /dev/rst0 を対象に読み書きしてしまう。
tar.gzを解凍(gzipで解凍してtarでアーカイブを展開)
tar.gzを解凍/展開する場合は、先ほどと同じようにして、「gzip」で解凍したものを、パイプ(|)「tar」に渡してアーカイブを展開します。
その際、tar.gzの内容だけを表示させたい場合は、「tar」のオプションとして「t」を指定します。
tar.gzをファイルとして展開したい場合は、「tar」のオプションとして「x」を指定します。
hoge.tar.gz の内容を表示のみをする
$ gzip -dc hoge.tar.gz | tar tvf -
hoge.tar.gz をファイルとして解凍/展開
$ gzip -dc hoge.tar.gz | tar xvf -
zipでアーカイブ/圧縮
「tar | gzip」でパイプさせてアーカイブ/圧縮するのが面倒なときは、「zip」コマンドでアーカイブ/圧縮することが出来ます。
使い方としては「zip 圧縮後ファイル名.zip 圧縮したいファイル名」になります。
ディレクトリを1つのファイルとして再帰的に圧縮したい場合は、オプション「-r」を指定します。
※zipでのアーカイブ/圧縮は簡単なのですが、圧縮率としては「tar | gzip」の方が良いみたいです。
単一ファイルを圧縮
$ zip filename.zip filename
ディレクトリを再帰的に圧縮
$ zip -r dirname.zip dirname/
zipをパスワードで暗号化
「zip」コマンドでは、オプション「-e」を指定するとパスワードで暗号化した形でアーカイブ/圧縮することができます。
zipで暗号化して圧縮
$ zip -e filename.zip filename.txt Enter password: Verify password: adding: filename.txt (stored 0%)
暗号化したファイルは、暗号化しない場合と同様に「unzip」コマンドで解凍できます。
コマンドを実行すると、パスワードを聞かれるので、zipでアーカイブ/圧縮する際に指定したパスワードを入力してください。
unzipで暗号化したファイルを解凍
$ unzip filename.zip Archive: filename.zip [filename.zip] filename.txt password: extracting: filename.txt
もしバッチ処理などで自動的に暗号化したい場合は、-e ではなく -P オプションを使用する。ただし zip コマンドの実行中に第三者が ps コマンドを叩いた場合、パスワードがわかってしまうので、セキュリティが保障できる環境のみで使用すること。
UNIXの部屋 コマンド検索 zip ( BSD Linux)
% zip -P secret exmaple.zip sample*
⇒ パスワード「secret」で暗号化
今回参考にしたページ
UNIXの部屋 コマンド検索 tar ( BSD Linux)
http://x68000.q-e-d.net/~68user/unix/pickup?tar
UNIXの部屋 コマンド検索 zip ( BSD Linux)
http://x68000.q-e-d.net/~68user/unix/pickup?zip