ファイルの圧縮コマンド
Linuxシステム上では圧縮形式としてはgzipがよく使用されている感じはありますが、その他にもいくつかの圧縮コマンドが用意されています。
試験的には基本的な圧縮コマンド数種とオプションを押さえておけばよいでしょう。
gzipコマンド
拡張子「.gz」で表わされるgzipはLinuxシステム上では高頻度で見かける圧縮方式であると思います。
他の圧縮コマンドのオプションなどもgzipコマンドに似たところがあるので、まずは確実に押さえておきたいコマンドの一つ。
普通に実行すると、ファイルに対してgz拡張子を付与した圧縮ファイルを生成します。
[wantan@localhost lpic]$ gzip uniq.txt [wantan@localhost lpic]$ ll | grep uniq -rw-rw-r--. 1 wantan wantan 43 8月 10 05:48 uniq.txt.gz
オプション
オプション | 内容 |
---|---|
-d | 圧縮ファイルを展開(解凍)する |
-c | ファイルを標準出力へ出力する |
-r | ディレクトリ内のファイルをすべて圧縮 |
■圧縮ファイルを解凍する
[wantan@localhost lpic]$ gzip -d uniq.txt.gz [wantan@localhost lpic]$ ll | grep uniq -rw-rw-r--. 1 wantan wantan 17 8月 10 05:48 uniq.txt
ファイルの解凍には「-d」オプションを使用する他にgunzipコマンドを使用する方法でも同じ解凍ができます。
[wantan@localhost lpic]$ gunzip uniq.txt.gz [wantan@localhost lpic]$ ll | grep uniq -rw-rw-r--. 1 wantan wantan 17 8月 10 05:48 uniq.txt
■圧縮前のファイルも残す
「-c」オプションは標準出力に出力を行うため、元々のファイル自体は残ります。
そこで標準出力をリダイレクトで受けてファイルを指定することにより、元ファイルを残して圧縮ファイルを生成することができます。
[wantan@localhost lpic]$ gzip -c uniq.txt > uniq.txt.gz [wantan@localhost lpic]$ ll | grep uniq -rw-rw-r--. 1 wantan wantan 17 8月 10 05:48 uniq.txt -rw-rw-r--. 1 wantan wantan 43 8月 15 17:13 uniq.txt.gz
■ディレクトリの中身を圧縮する
普通にディレクトリを圧縮しようとするとエラーになります。
[wantan@localhost lpic]$ gzip file/ gzip: file/ is a directory -- ignored
なので、「-r」オプションを使用します。
[wantan@localhost lpic]$ gzip -r file/ [wantan@localhost lpic]$ ll file/ 合計 16 -rw-rw-r--. 1 wantan wantan 44 8月 10 06:45 files.gz -rw-rw-r--. 1 wantan wantan 30 8月 10 06:45 test1.txt.gz -rw-rw-r--. 1 wantan wantan 30 8月 10 06:45 test2.txt.gz -rw-rw-r--. 1 wantan wantan 30 8月 10 06:45 test3.txt.gz
ディレクトリの中身のファイルが圧縮されるので、ディレクトリごとまとめたい場合などには後述するアーカイブと組み合わせる必要があります。
■おまけ
圧縮ファイルの内容をディスプレイに表示する。
試験には出るか不明ですが、圧縮コマンドには圧縮されたファイルの内容を表示するcat系コマンドが用意されています。
gzipであればzcatコマンドなど。
[root@localhost lpic]# zcat sort.txt 10 2 55 9test rt 27 Sort spase 000 oooo abc AAAAAAAA 098765 nnnnnnn
bzip2コマンド
bzip2は拡張子「bz2」で表さられる圧縮コマンドの一つです。
試験的には問われることは少なそうですが、gzipと比較したときに圧縮率が高い、圧縮処理に時間がかかるという特徴があります。
個人的な感覚としてはかなり大きいファイルの圧縮を行ったとき、処理に結構な時間がかかるようになったと思います。
試験的には基本的な使い方としてのオプションの方が大事です。
[root@localhost lpic]# bzip2 uniq.txt [root@localhost lpic]# ll | grep uniq -rw-rw-r--. 1 wantan wantan 45 8月 10 05:48 uniq.txt.bz2
オプション
基本的にはgzipと同じような使い方になります。
オプション | 内容 |
---|---|
-d | 圧縮ファイルを展開(解凍)する |
-c | ファイルを標準出力へ出力する |
■bzipファイルの解凍
bzipについてもオプションとbunzip2コマンドでの解凍があります。
gunzipと全く同じなので、そこまで意識する必要はないかと思います。
[root@localhost lpic]# bunzip2 -d uniq.txt.bz2
[root@localhost lpic]# bunzip2 uniq.txt.bz2
xzコマンド
xzコマンドも同じく圧縮コマンドですが、bzipと比較してさらに圧縮率が高く処理に時間がかかります。
[root@localhost lpic]# xz uniq.txt [root@localhost lpic]# ll | grep uniq -rw-rw-r--. 1 wantan wantan 76 8月 10 05:48 uniq.txt.xz
オプション
これまでのコマンドと比較して微妙に違うので意識して覚える必要があります。
オプション | 内容 |
---|---|
-d | 圧縮ファイルを展開(解凍)する |
-k | 圧縮、解凍時に元ファイルを削除しない |
-l | 圧縮ファイル内のファイルを一覧表示 |
■xzファイルを解凍する
こちらもオプションとコマンドでの解凍があります。
[wantan@localhost lpic]$ xz -d uniq.txt.xz
[wantan@localhost lpic]$ unxz uniq.txt.xz
■元ファイルを残して圧縮する
[wantan@localhost lpic]$ xz -k uniq.txt [wantan@localhost lpic]$ ll | grep uniq -rw-rw-r--. 1 wantan wantan 17 8月 10 05:48 uniq.txt -rw-rw-r--. 1 wantan wantan 76 8月 10 05:48 uniq.txt.xz
アーカイブコマンド
ここでいうアーカイブは複数のファイルを一つのディレクトリにまとめることをさします。
一般には圧縮コマンドとセットで使われることが多いと思います。
tarコマンド
アーカイブの形式として一番メジャーなのは「tar」形式でしょう。
試験的にもアーカイブコマンドとしては一番出題確率が高いと思われます。
出題範囲のオプションがとにかく多いので、あまり使ったことのない場合にはオプションを覚えるのに苦労すると思われます。
オプション
慣例的にオプションは「-」ハイフンをつけずに実行することができます。
ここに示したもの以外にも本来はいくつかありますが、試験的に重要なものに絞っています。
オプション | 内容 |
---|---|
-c | アーカイブを作成 |
-x | アーカイブからファイルを取り出す |
-t | アーカイブ内容を表示 |
-f | アーカイブファイル名を指定する |
-z | gzipによる圧縮展開を行う |
-j | bzip2による圧縮展開を行う |
-J | xzによる圧縮展開を行う |
-v | 詳細情報の表示 |
■アーカイブを生成する
ファイル名を指定して、アーカイブを生成する。
[wantan@localhost file]$ tar cf test.tar test1.txt [wantan@localhost lpic]$ ll | grep test -rw-rw-r--. 1 wantan wantan 10240 8月 16 02:31 test.tar -rw-rw-r--. 1 wantan wantan 83 8月 13 01:37 test.txt -rw-rw-r--. 1 wantan wantan 62 8月 9 22:47 testfile.txt
■gzipで圧縮してアーカイブする
tarアーカイブではオプションによりアーカイブ時に圧縮をかけることも可能です。
同じようにbzip2の場合は「-j」オプション、xzの場合は「-J」オプションを使用することで同様のことができます。
試験的にはオプションと圧縮形式の紐づけをしっかり覚えておいた方がいいでしょう。
[wantan@localhost file]$ tar cfz test.tar.gz test1.txt test2.txt [wantan@localhost file]$ ll | grep test -rw-rw-r--. 1 wantan wantan 131 8月 16 02:46 test.tar.gz -rw-rw-r--. 1 wantan wantan 0 8月 16 02:46 test1.txt -rw-rw-r--. 1 wantan wantan 0 8月 10 06:45 test2.txt -rw-rw-r--. 1 wantan wantan 0 8月 10 06:45 test3.txt drwxrwxr-x. 2 wantan wantan 6 8月 16 02:43 testd
■アーカイブ内のファイルを表示する
アーカイブ化したファイルは展開しなければ内容ファイルを確認することができないので、展開せずに中身のファイルを確認したい場合には「-t」オプションを用います。
[wantan@localhost file]$ tar tf test.tar test1.txt
■アーカイブからファイルを取り出す
解凍に等しいですが、ファイルを取り出すのでアーカイブファイル自体はそのまま残ります。
[wantan@localhost file]$ tar xf test.tar
cpioコマンド
私はちゃんと使ったことがありませんでしたが、Linuxの圧縮系コマンドには「cpio」コマンドも存在します。
「cpio」コマンドは試験的には出題頻度はやや落ちると思われ、オプションを全て覚えるまでいかなくていいと思っているもののtarコマンドとは少し勝手が違うのでやや注意です。
cpioコマンドでは、オプションの他にフラグというオプションと併用するものがあります。
以下、主要なものだけ確認していきます。
フラグ
フラグ | 内容 |
---|---|
|
アーカイブからファイルを抽出 |
|
アーカイブを作成 |
|
ファイルを別のディレクトリにコピー |
オプション
オプション | 内容 |
---|---|
-A | 既存のアーカイブにファイルを追加 |
-d | 必要なディレクトリを作成 |
-r | ファイル名を対話的に変更 |
-t | 入力された内容を一覧表示 |
-v | ファイル名の一覧を表示 |
■アーカイブファイルを作成する
「-o」フラグで作成する場合、標準入力から対象ファイルを選定し、アーカイブファイルは標準出力に出力するのでファイルに保存する場合にはリダイレクトで渡してあげる必要があります。
また。通常は1ファイルを対象にするわけではなく複数ファイルを対象にする場合が多いでしょう。
[wantan@localhost file]$ ls test1.txt | cpio -o > ./test.cpio 1 block
■アーカイブファイルを展開する
標準入力にアーカイブファイルを渡し、-iオプションを付与することで展開できます。
[wantan@localhost testd]$ cpio -i < test.cpio 1 block [wantan@localhost testd]$ ll 合計 4 -rw-rw-r--. 1 wantan wantan 512 8月 17 23:07 test.cpio -rw-rw-r--. 1 wantan wantan 0 8月 17 23:26 test1.txt
最低限は、作成と展開のコマンド形式を押さえておけばいいでしょう。
ddコマンド
ddコマンドはこれまで全く知りませんでした。
入力側に指定したファイルからの入力を、ファイルもしくは標準出力に送るコマンドです。
以下のように一般的なファイルを扱うこともできますが、これだけであればcpコマンドでも容易に同じことができます。
[wantan@localhost testd]$ dd if=./test1.txt of=./ddtest.txt 0+0 レコード入力 0+0 レコード出力 0 バイト (0 B) コピーされました、 0.000739646 秒、 0.0 kB/秒 [wantan@localhost testd]$ ll 合計 4 -rw-rw-r--. 1 wantan wantan 0 8月 17 23:32 ddtest.txt -rw-rw-r--. 1 wantan wantan 512 8月 17 23:07 test.cpio -rw-rw-r--. 1 wantan wantan 0 8月 17 23:26 test1.txt
実際に使用する場合には、デバイスの内容をまるごとコピーしたりするのが実践的な使い方のようです。
dd if=/dev/sda of=/home/wantan/ddsdatest
オプション
オプション | 内容 |
---|---|
if= | 入力側ファイルを指定 |
of= | 出力側ファイルを指定 |
bs= | 入出力のブロックサイズを指定 |
count= | 回数分の入力ブロックをコピー |
各オプションも試験ではピンポイントで出題される可能性があると思います。
ーーーーーーーーーーーーーーーー
・前回(第十五回)
www.wantanblog.com
・次回(第十七回)
www.wantanblog.com