kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

CentOS7 コマンド ファイル、ディレクトリをgzip形式で圧縮、解凍

Linuxではファイル、ディレクトリの圧縮形式にgzip形式がよく使われます。

CentOS7でファイル、ディレクトリをgzip形式で圧縮するコマンド、gzip形式の圧縮ファイルを解凍するコマンドを以下に示します。

※ここではCentOS7.6を使用して、動作確認を行なっています。

以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。

圧縮、解凍前のファイル、ディレクトリの状態

ここで例として示す圧縮、解凍コマンドを実行する前のファイル、ディレクトリの状態は、以下のようになっているものとします。

$ ls -l ~/work01/
合計 4
drwxrwxr-x. 2 user01 user01 24  6月 17 14:31 dir01
-rw-rw-r--. 1 user01 user01  7  6月 17 14:31 file01.txt
$ ls -l ~/work01/dir01/
合計 4
-rw-rw-r--. 1 user01 user01 7  6月 17 14:31 file02.txt
$ ls -l ~/work02/
合計 0
$ ls -l ~/work03/
合計 0

ファイル、ディレクトリをgzip形式で圧縮

ファイル、ディレクトリをgzip形式で圧縮するには、tarコマンドを使用します。

$ cd ~/work01/
$ tar cfzv ~/work02/aaa.tar.gz file01.txt dir01/
file01.txt
dir01/
dir01/file02.txt
  • 圧縮対象のファイル、ディレクトリが存在するディレクトリ「~/work01/」で、コマンドを実行するようにしています

  • 圧縮ファイルを作成するには、対象のファイル、ディレクトリをまとめたアーカイブを作成する必要があります。

    「c」オプションを指定すると、圧縮対象のファイル、ディレクトリをまとめたアーカイブが作成されます。

    尚、tarコマンドでは、オプションを指定するときに「-」は指定しないようにします。

  • アーカイブ対象のファイルを指定するには、「f」オプションを指定します。

  • 「z」オプションを指定すると、アーカイブがgzip形式で圧縮されます。

  • 「v」オプションを指定すると、コマンドの対象となったファイルの一覧が表示されます。

  • 空のディレクトリ「~/work02/」に圧縮ファイル「aaa.tar.gz」を作成するようにしています。

    gzip形式の圧縮ファイルの拡張子には、「.tar.gz」が使用されます。

    圧縮する対象として、ファイル「file01」とディレクトリ「dir01」を指定しています。

作成された圧縮ファイルは、以下のようになります。

$ ls -l ~/work02/
合計 4
-rw-rw-r--. 1 user01 user01 185  6月 17 16:52 aaa.tar.gz

gzip形式の圧縮ファイルを解凍

gzip形式の圧縮ファイルを解凍するには、tarコマンドを使用します。

$ cd ~/work03/
$ tar xfzv ~/work02/aaa.tar.gz
file01.txt
dir01/
dir01/file02.txt
  • 空のディレクトリ「~/work03/」で、コマンドを実行するようにしています

  • 「x」オプションを指定すると、アーカイブが展開されます。

    尚、tarコマンドでは、オプションを指定するときに「-」は指定しないようにします。

  • アーカイブ対象のファイルを指定するには、「f」オプションを指定します。

  • 「z」オプションを指定すると、gzip形式で圧縮されたアーカイブが解凍されます。

  • 「v」オプションを指定すると、コマンドの対象となったファイルの一覧が表示されます。

  • 解凍する対象として、圧縮ファイル「~/work02/aaa.tar.gz」を指定しています。

解凍された結果は、以下のようになります。

$ ls -l ~/work03/
合計 4
drwxrwxr-x. 2 user01 user01 24  6月 17 14:31 dir01
-rw-rw-r--. 1 user01 user01  7  6月 17 14:31 file01.txt

圧縮対象のファイル、ディレクトリのパスの指定の仕方について(絶対パス)

圧縮対象のファイル、ディレクトリをユーザーのホームディレクトリ「~」を使用して指定すると、絶対パスで指定した時と同じ状態になります。

$ cd ~/work02/
$ tar cfzv aaa.tar.gz ~/work01/file01.txt ~/work01/dir01/
tar: メンバ名から先頭の `/' を取り除きます
/home/user01/work01/file01.txt
/home/user01/work01/dir01/
/home/user01/work01/dir01/file02.txt
$ ls -l ~/work02/
合計 4
-rw-rw-r--. 1 user01 user01 202  6月 17 17:09 aaa.tar.gz

解凍された結果は、以下のようになります。

$ cd ~/work03/
$ tar xfzv ~/work02/aaa.tar.gz
home/user01/work01/file01.txt
home/user01/work01/dir01/
home/user01/work01/dir01/file02.txt
$ ls -l ~/work03/
合計 0
drwxrwxr-x. 3 user01 user01 20  6月 17 17:16 home
$ ls -l ~/work03/home/
合計 0
drwxrwxr-x. 3 user01 user01 20  6月 17 17:16 user01
$ ls -l ~/work03/home/user01/
合計 0
drwxrwxr-x. 3 user01 user01 37  6月 17 17:16 work01
$ ls -l ~/work03/home/user01/work01/
合計 4
drwxrwxr-x. 2 user01 user01 24  6月 17 14:31 dir01
-rw-rw-r--. 1 user01 user01  7  6月 17 14:31 file01.txt

圧縮対象のファイル、ディレクトリのパスの指定の仕方について(相対パス)

圧縮対象のファイル、ディレクトリを相対パスで指定すると、以下のようになります。

$ cd ~/work02/
$ tar cfzv aaa.tar.gz ../work01/file01.txt ../work01/dir01/
tar: メンバ名から先頭の `../' を取り除きます
../work01/file01.txt
../work01/dir01/
../work01/dir01/file02.txt
$ ls -l ~/work02/
合計 4
-rw-rw-r--. 1 user01 user01 196  6月 17 17:24 aaa.tar.gz

解凍された結果は、以下のようになります。

$ cd ~/work03/
$ tar xfzv ~/work02/aaa.tar.gz
work01/file01.txt
work01/dir01/
work01/dir01/file02.txt
$ ls -l ~/work03/
合計 0
drwxrwxr-x. 3 user01 user01 37  6月 17 17:25 work01
$ ls -l ~/work03/work01/
合計 4
drwxrwxr-x. 2 user01 user01 24  6月 17 14:31 dir01
-rw-rw-r--. 1 user01 user01  7  6月 17 14:31 file01.txt

CentOS7 コマンド ファイル、ディレクトリをgzip形式で圧縮、解凍については、以上です。