hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

よく使う圧縮/解凍コマンドをまとめ(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ファイルを指定する
一見、毎回 f オプションを指定する意味がないように思えるが、本来 tar はテープドライブに書き出すコマンドなので、f でアーカイブ名を指定しないとテープドライブのデバイス /dev/rst0 を対象に読み書きしてしまう。

UNIXの部屋 コマンド検索 tar ( BSD Linux)

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/

unzipで解凍/展開

zipでアーカイブ/圧縮したファイルは「unzip」コマンドで解凍/展開することができます。

$ unzip filename.zip
$ unzip dirname.zip

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 コマンドを叩いた場合、パスワードがわかってしまうので、セキュリティが保障できる環境のみで使用すること。
% zip -P secret exmaple.zip sample*
⇒ パスワード「secret」で暗号化

UNIXの部屋 コマンド検索 zip ( BSD Linux)

今回参考にしたページ

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