アフィリエイト広告を利用しています

2024年08月16日

【Linux】ファイル圧縮・解凍(gzip)ディレクトリ編

Linuxでファイルを圧縮するにはgzipコマンドを利用する。

ここでは、ディレクトリの圧縮・解凍の実例を示す。
gzipコマンドでは、フォルダ(ディレクトリ)の圧縮はできないため、いったんtarファイルにまとめてから(アーカイブ化してから)、圧縮することとなる(実際には1動作で両方を行う)。拡張子が「.tar.gz」であるパターンである。

手順1から4で、ファイル準備の確認、圧縮および解凍を示す。

1.事前準備(および確認)

$ ls -lR ~/kaisou1/
/home/bronte/kaisou1/:
合計 8
drwxr-xr-x 2 bronte bronte 4096 8月 16 16:16 kaisou2
-rw-r--r-- 1 bronte bronte 2683 8月 14 18:10 航空情報202310.txt

/home/bronte/kaisou1/kaisou2:
合計 436
-rw-r--r-- 1 bronte bronte 434878 8月 14 15:06 航空ファン.pdf
-rw-r--r-- 1 bronte bronte 2259 8月 14 17:24 航空情報202311.txt
-rw-r--r-- 1 bronte bronte 2444 8月 14 15:29 航空情報202312.txt


ホームディレクトリにファイルを設置する。
ディレクトリは階層としている。


2.圧縮(および確認)

$ tar -zcvf kaisou1kaisou2.tar.gz ./kaisou1
./kaisou1/
./kaisou1/kaisou2/
./kaisou1/kaisou2/航空ファン.pdf
./kaisou1/kaisou2/航空情報202312.txt
./kaisou1/kaisou2/航空情報2023
$
$ ls -1 kaisou1kaisou2.tar.gz
-rw-r--r-- 1 bronte bronte 427083 8月 16 11:10 kaisou1kaisou2.tar.gz


「tar」コマンドで圧縮する。圧縮後のファイル名および、圧縮対象のディレクトリを指定する
対象のディレクトリに親のディレクトリ(kaisou1)を指定すると、子のディレクトリ(kaisou2)も含まれている。
コマンド形式は「tar オプション 圧縮されたファイル名 圧縮する対象のディレクトリ」である。今回は圧縮ファイル名は「kaisou1kaisou2.tar.gz」としている。
オプションは zcvf としており、説明をする
z はzipの意である(zをつけないと、圧縮されていない状態のtarファイルが作成される)。
c はcreateの意で作成することを示す。
v はviewの意で圧縮中の結果を表示する。なくても構わない。上記では、コマンド入力後に対象となったファイルが表示されるが、vオプションをつけないと何も表示されない。
f はfileの意でファイル指定のことである。fの指定は必須である。
なお、それぞれの記載する順であるが、fは後ろに記述すること。例えばfzcvにようにするとエラーとなる。

3.中身の確認

$ tar -tf kaisou1kaisou2.tar.gz
./kaisou1/
./kaisou1/kaisou2/
./kaisou1/kaisou2/航空ファン.pdf
./kaisou1/kaisou2/航空情報202312.txt
./kaisou1/kaisou2/航空情報202311.txt
./kaisou1/航空情報202310.txt
$
$ tar -zxOf kaisou1kaisou2.tar.gz ./kaisou1/kaisou2/航空情報202312.txt | head -4
航空情報 2023年12月号 税込価格1,540円

特集@ 海上自衛隊第61航空隊
特集A 航空自衛隊 Fの系譜
$
$ tar -zxOf kaisou1kaisou2.tar.gz ./kaisou1/kaisou2/*.txt | grep -H 特集
(標準入力):特集@ 海上自衛隊第61航空隊
(標準入力):特集A 航空自衛隊 Fの系譜
(標準入力):特集 フランスの美学 ダッソー ラファール


1つ目はオプション tf でtarファイル内のファイルを表示している。オプションの「t」はtestの意である。
2つ目はオプション zxOf およびファイ名指定で、テキストファイルのファイルの内容を表示している。xはextract(抽出)の意である。「0」はアルファベットのオーである。ファイルを標準出力に抽出するためのものであり「to-stdout」内のoかと思われる。
3つ目は出力対象のファイルを「*」(ワイルドカード)を使用し複数としている。grepで複数ファイルの中で文字列「特集」を含む行を抽出している。ここでは例としてgrepにHオプションでファイル名も出力されるはずであるが、tarファイルからの抽出のため、ファイル名の出力される位置に(標準入力)と表示されている。


4.解凍(および確認)

$ cd ~/tmp
$ tar -zxvf ~/kaisou1kaisou2.tar.gz
./kaisou1/
./kaisou1/kaisou2/
./kaisou1/kaisou2/航空ファン.pdf
./kaisou1/kaisou2/航空情報202312.txt
./kaisou1/kaisou2/航空情報202311.txt
./kaisou1/航空情報202310.txt
$
$ ls -1 -R ~/tmp/
/home/bronte/tmp/:
kaisou1

/home/bronte/tmp/kaisou1:
kaisou2
航空情報202310.txt

/home/bronte/tmp/kaisou1/kaisou2:
航空ファン.pdf
航空情報202310.txt
航空情報202311.txt
航空情報202312.txt


「cd」コマンドを最初に入力しているが、解凍場所の確認のためである(tmpフォルダに移動している)。
次の「tar」コマンドで解凍を行っている。解凍場所は指定できないため、コマンドを入力したディレクトリ(tmpフォルダ)に解凍される、
オプションの説明をする。zxvf であるが、z,x,v,fのすべて前述のとおりである。zip、extract、view、fileを示す。オプションの圧縮・解凍の違いは、cとxの違いである。なお、コマンド実行後は圧縮ファイル(拡張子tar.gz)は削除される。


(゚∀゚)アヒャ


posted by bronte at 17:28| Comment(0) | TrackBack(0) | Linux
カテゴリーアーカイブ
[PR]
最新記事
[PR]
プロフィール
「航空ファン」「航空情報」のブックナンバーを紹介していきます。今年亡くなった父の雑誌です。私はあまり乗り物やメカに興味がないのですが、手元にあるので載せていきます。私の独り言系も書いてみます。
bronteさんの画像
bronte
プロフィール