1
0

More than 3 years have passed since last update.

tarの中身に対してチェックサムを打ちたい

Last updated at Posted at 2019-12-23

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ファイルを指定すると、こんな感じで出力されます。tartar.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. 実データからチェックサム計算

をしています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0