その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

JSON 形式で記述された内容に応じて、ファイル群を1つのtar.gz にまとめるプログラムを書きました

業務で必要に迫られたので、タイトルの通りのプログラムを書きました。手っ取り早くPerl で。
モノはこちらにございます。
https://github.com/moznion/packingProgram_byPerl
ただ単に"ppp"という略称を付けたかったのでこういう名前になりました。


くわしく

JSON 形式で書いたファイルを第1引数としてプログラムに食べさせるとtar.gz ファイルが生成されます。

JSON ファイルに
{"location":"./hoge", "type":"dir", "target":"/"}
みたいな感じで記述するとhoge ディレクトリの中身が全部tar.gz ファイルにパッキングされます。
{"location":"./foo", "type":"file", "target":"/"}
のように記述するとファイルfoo がtar.gz ファイルに含まれます。
{"location":"./bar", "type":"file", "target":"/foobar"}
という具合に記述すると、foobar というディレクトリの中にファイルbar が入った状態でtar.gz に梱包されます。
これを複数行記述できるので、一度JSON ファイルを書いてしまえば
ワンコマンドで色々な所にとっちらかったファイルを1つにまとめる事が出来るので楽ちんかな、と。

ちなみに、「このディレクトリごとtar にしたいけど、このファイルだけは除外したいワ」という方(自分)の為に、
tar に特定のファイルを含めないようにする仕組みも作りました。
JSON 形式で書いたファイルを第2引数としてプログラムに与えると、そこに記述されたファイルがtar から除外されます。
書式等はREADME をご覧下さい。

もしも「俺は使うぞ!!」という豪気な方がいらっしゃいましたらREADME やsample を参照していただければと思います。


こんな時に使おう!

  • ソースコードやネイティブコードを定期的に1つのファイルにパッケージングして配布する必要があるとき(簡易的なインストーラを生成する体で)
    • 僕はこの目的でこのプログラムを書きました
  • 自動的に生成されるログファイル群を1つのファイルにまとめて、然るべき部門に投げてあげる必要があるとき
  • ただ意味もなく漠然と、しかしはっきりとした意識で、ただただ書庫ファイルを作りたくなった時
などなど……


注意

JSON ファイルは、1つのオブジェクトに対してワンライナーで記述してください。じゃないと動きません。
(気が向いたら直します)