Linuxコマンド#5

Linux #5です。


#tarコマンド
ファイルをアーカイブする

ファイル属性をそのままアーカイブする。
(パーミッションやタイムスタンプなど)

一般ユーザーでtarコマンドを実行する場合、一部のファイル属性が維持できない場合がある。
所有者がrootでオーナーのみに読み込みパーミッションが付いている場合は、一般ユーザーで
アーカイブできない。

```sh
#tar cf <アーカイブファイル> <アーカイブ元ファイルパス>
#cオプションはcreateを意味している
#fオプションはファイルを意味している
[wataru@localhost work]$ tar cf dir1.tar dir1

[wataru@localhost work]$ ls -l
total 20
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
#.tarが作成されている
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
```

####アーカイブファイルの内容確認

```sh
#tオプションを指定すると、アーカイブファイルの内容を表示する
#tはlistのtを表している
[wataru@localhost work]$ tar tf dir1.tar 
dir1/
dir1/file-1.txt
dir1/file-2.txt
dir1/file-3.txt
dir1/file-4.txt
dir1/file-5.txt
```

####アーカイブの展開

```sh
#アーカイブから元のファイルを復元できることを確認するために、
#dir1ディレクトリを事前に削除する
[wataru@localhost work]$ rm -rf dir1
[wataru@localhost work]$ ls -l
total 20
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.07.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.08.txt

#xオプションを指定すると、展開することができる
#xはextractのxを表している
[wataru@localhost work]$ tar xf dir1.tar 
[wataru@localhost work]$ ls -l
total 20
#dir1ディレクトリが復元しているのを確認
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.07.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.08.txt
```

```sh
[wataru@localhost work]$ tar cvf dir11.tar dir1
#オプションvを使用すると、アーカイブ作成時に、対象となったファイルリスト
#を表示する
dir1/
dir1/file-1.txt
dir1/file-2.txt
dir1/file-3.txt
dir1/file-4.txt
dir1/file-5.txt
```

#gzipコマンド

ファイルを圧縮する

```sh
[wataru@localhost work]$ gzip work.02.txt 
#gzip <圧縮元ファイル>
#.gzという拡張子で圧縮ファイルが作成される
[wataru@localhost work]$ ls -l
total 32
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
-rw-rw-r--. 1 wataru wataru 10240 Aug 21 03:55 dir11.tar
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    88 Jul 29 05:56 work.02.txt.gz
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.07.txt
```

```sh
[wataru@localhost work]$ gzip -d work.02.txt.gz 
#dオプションを使用すると、圧縮ファイルを展開することができる
[wataru@localhost work]$ ls -l
total 32
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
-rw-rw-r--. 1 wataru wataru 10240 Aug 21 03:55 dir11.tar
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.07.txt
```

####gzipにはアーカイブする機能はない為、1つのファイルしか圧縮できない。
####そのため、複数のファイルをまとめて圧縮するにはtarコマンドを使用する。

```sh
[wataru@localhost work]$ tar cfz dir100.tar.gz dir1
#tarコマンドでtar+gzファイルを作成することができる
#zオプションを使用することで実現できる
[wataru@localhost work]$ ls -l
total 36
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
-rw-rw-r--. 1 wataru wataru   183 Aug 21 04:42 dir100.tar.gz
-rw-rw-r--. 1 wataru wataru 10240 Aug 21 03:55 dir11.tar
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
```

```sh
[wataru@localhost work]$ tar xfz dir100.tar.gz 
#tar+gzファイルを直接展開するには、xオプションとzオプションを使用する
#dir1が展開されていることが確認できる
[wataru@localhost work]$ ls -l
total 36
drwxrwxr-x. 2 wataru wataru    96 Aug 14 05:06 dir1
-rw-rw-r--. 1 wataru wataru   183 Aug 21 04:42 dir100.tar.gz
-rw-rw-r--. 1 wataru wataru 10240 Aug 21 03:55 dir11.tar
-rw-rw-r--. 1 wataru wataru 10240 Aug 14 05:07 dir1.tar
drwxrwxr-x. 2 wataru wataru     6 Jul  5 04:38 gogodur
drwxrwxr-x. 3 wataru wataru   156 Jul 17 04:25 testgo
-rw-rw-r--. 1 wataru wataru    83 Jul 29 05:56 work.02.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.03.txt
-rw-rw-r--. 1 wataru wataru    25 Jul 21 04:32 work.04.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.05.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.06.txt
-rw-rw-r--. 1 wataru wataru     0 Jul  5 04:09 work.07.txt
```