LinuxやUnixに設定ファイルをリリースするときに、
1. 開発環境で設定ファイルいじる
2. tarで固める
3. ステージングor本番でtarを展開する
という流れはよくあると思いますが、tarの中身は開発環境と同じか?
とか言われることあります。
また、クラスタを組んでいるサーバ同士で設定が同じかチェックするために、
sosreport
なりで情報を取得して比較する、というタスクがあります。
そんなときに全ファイルをdiffしていると見づらい。手っ取り早く差分があるか見たい、しかし展開はしたくない、
というニーズが(自分には)あったので、作ってみました。
https://github.com/kuritayu/infra-tools
仕様
以下で取得できます。
go get github.com/kuritayu/infra-tools
go install "${GOPATH}"/src/infra-tools/cmd/lstar
引数なし
引数なしで実行するとhelpがでます。
NAME:
lstar - print tar information
USAGE:
lstar [global options] command [command options] [arguments...]
VERSION:
1.0
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
引数あり
引数としてtarファイルを指定すると、こんな感じで出力されます。tar
とtar.gz
に対応してます。
Permission Owner Group Size Date Path Checksum
-rw-r--r-- kuritayu staff 3584 2019-12-14 23:53:20 test/test.tar b441b2f9a3e8a6154f60a1ef6509e9bf
drwxr-xr-x kuritayu staff 0 2019-12-09 23:13:54 ./test/ d41d8cd98f00b204e9800998ecf8427e
-rw-r--r-- kuritayu staff 2 2019-12-09 23:14:00 ./test/test2.txt 30cf3d7d133b08543cb6c8933c29dfd7
urw-r--r-- kuritayu staff 16 2019-12-10 08:39:10 ./test.txt 697f3de8175d739661ce5d0f9009eec4
チェックサム値はMD5で計算してます。
基本的な処理は、
1. 引数で与えられたファイルに対するvalidate
2. 該当ファイル(tar or tar.gz)を読み込み、tar.NewReader
に読ませる
3. ヘッダーデータや実データを構造体にセット
4. 実データからチェックサム計算
をしています。