定時帰る術-Linux 圧縮ファイル管理（tarコマンド）

サーバにファイルを送る時も、サーバからファイルを持ってくる時も細かいファイルを圧縮してまとめてやった方がよく使われる。

### windowsでやり取りの場合
(作業端末→Linux)

**Windows側で共有フォルダを作っても、いけなくはないけど、Linux側でmountする必要があり、偶々であれば、圧縮してSCPでいいだろう**

理由：
①Windowsのアカウント、FWを設定することもあるし、川口的は面倒くさいだと思う
②Linux側でsambaを作ってもいけるが、追加パッケージのインストールや初期設定する必要があるから、面倒くさい。。。。
（WindowsからのSCP方法はgoogle先生に聞いてみて、画面キャプチャをとって、画像を貼り付けるのが面倒くさいので、やりません）
**（面倒くさいことは、一切やりません）**

### linux同士
(Linux⇔Linux)
あるファイルを複数Linuxに転送する場合は、1台のNFSを有効にし、共有した方がいいかもしれない。
NFSでやる場合でも、追加パッケージ（nfs-utils）のインストールの必要だが、まあまあ、nfs-utilsだけなら、（アンインストールもできるし）大丈夫だろう。
（本当に大丈夫かは周りの方と相談しよう）


### tarコマンド
tarコマンドのオプションは多く、川口的はよく使っているのがzcvf（圧縮）、zxvf（解凍）
あれ、圧縮と解凍が同じじゃないかと思う方もいるかもしれない。
よく見てみたら、「c」と「x」の差だけ
じゃ、具体的にという意味なのか、簡単に説明させてもらう。
z：gzipで圧縮する。
j：gzip2で圧縮する。
J：xzで圧縮する。
v：進捗や詳細情報なのを表示させる
f：圧縮ファイル名を指定する
c：新しい圧縮ファイルを作る
x：圧縮ファイルを解凍する

(j、Jはあんまり使ったことがない、オプションの付け方はzと同じたと信じる)




### オプション：c


apacheの定義ファイルを圧縮する。
```
[root@mgmt tmp]# tar zcvf http_conf.tgz /etc/httpd/*/*.conf
tar: メンバ名から先頭の `/' を取り除きます
/etc/httpd/conf.d/autoindex.conf
tar: ハードリンク先から先頭の `/' を取り除きます
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.d/zabbix.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-optional.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf.modules.d/10-h2.conf
/etc/httpd/conf.modules.d/10-proxy_h2.conf
/etc/httpd/conf/httpd.conf
```
圧縮ファイルの中身を確認
### オプション：t

```
[root@mgmt tmp]# tar tvf http_conf.tgz
-rw-r--r-- root/root      2926 2022-07-29 12:44 etc/httpd/conf.d/autoindex.conf
-rw-r--r-- root/root      1618 2022-07-07 21:37 etc/httpd/conf.d/php.conf
-rw-r--r-- root/root      1252 2022-07-29 12:41 etc/httpd/conf.d/userdir.conf
-rw-r--r-- root/root       574 2022-07-29 12:41 etc/httpd/conf.d/welcome.conf
-rw-r--r-- root/root       794 2023-03-06 23:36 etc/httpd/conf.d/zabbix.conf
-rw-r--r-- root/root      3311 2022-07-29 12:41 etc/httpd/conf.modules.d/00-base.conf
-rw-r--r-- root/root       139 2022-07-29 12:41 etc/httpd/conf.modules.d/00-dav.conf
-rw-r--r-- root/root        41 2022-07-29 12:41 etc/httpd/conf.modules.d/00-lua.conf
-rw-r--r-- root/root       948 2022-07-29 12:41 etc/httpd/conf.modules.d/00-mpm.conf
-rw-r--r-- root/root       787 2022-07-29 12:41 etc/httpd/conf.modules.d/00-optional.conf
-rw-r--r-- root/root      1073 2022-07-29 12:41 etc/httpd/conf.modules.d/00-proxy.conf
-rw-r--r-- root/root        88 2022-07-29 12:41 etc/httpd/conf.modules.d/00-systemd.conf
-rw-r--r-- root/root       451 2022-07-29 12:41 etc/httpd/conf.modules.d/01-cgi.conf
-rw-r--r-- root/root        45 2022-01-25 09:44 etc/httpd/conf.modules.d/10-h2.conf
-rw-r--r-- root/root        57 2022-01-25 09:44 etc/httpd/conf.modules.d/10-proxy_h2.conf
-rw-r--r-- root/root     11899 2022-07-29 12:41 etc/httpd/conf/httpd.conf
```

### オプション：x
http_conf.tgzを展開
```
[root@mgmt tmp]# tar zxvf http_conf.tgz
etc/httpd/conf.d/autoindex.conf
etc/httpd/conf.d/php.conf
etc/httpd/conf.d/userdir.conf
etc/httpd/conf.d/welcome.conf
etc/httpd/conf.d/zabbix.conf
etc/httpd/conf.modules.d/00-base.conf
etc/httpd/conf.modules.d/00-dav.conf
etc/httpd/conf.modules.d/00-lua.conf
etc/httpd/conf.modules.d/00-mpm.conf
etc/httpd/conf.modules.d/00-optional.conf
etc/httpd/conf.modules.d/00-proxy.conf
etc/httpd/conf.modules.d/00-systemd.conf
etc/httpd/conf.modules.d/01-cgi.conf
etc/httpd/conf.modules.d/10-h2.conf
etc/httpd/conf.modules.d/10-proxy_h2.conf
etc/httpd/conf/httpd.conf
```

確認

```
[root@mgmt tmp]# ll /var/tmp/etc/httpd/
合計 4
drwxr-xr-x 2 root root   24 10月 29 22:33 conf
drwxr-xr-x 2 root root  103 10月 29 22:33 conf.d
drwxr-xr-x 2 root root 4096 10月 29 22:33 conf.modules.d
```

### 最後
圧縮ファイルからリストアする場合、
「cd /」を実行しておく必要がある。

以上