長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

リモートサーバとローカルサーバとの差分のあるファイル情報を取得するツール作ってみた

Imgur

概要

リモートサーバとローカルサーバとの差分のあるファイル情報を取得するツールを Golang で作成しました。

github.com

どんなツールか3行まとめ

  1. ローカルワークスペースを元にリモートサーバからディレクトリと拡張子指定し実行ディレクトリ上にファイルをダウンロード
  2. ローカルのワークスペースから実行ディレクトリ上にファイルをコピー
  3. 1,2 で取得したファイルから差分をチェック

利用想定ケース

  • リモートファイルサーバとローカルワークスペースの同期状況が不明瞭である場合

この1点のみです。
整備されたデプロイ環境では発生しにくいケースです。

ですが意外と多いです。

Imgur

それはこんなケース

  • 担当者が退職して引き継がれていない (>_<)
  • ちょっとしたツールだしGit管理してなかった (>_<)
  • 別の業者さんがサーバにアクセスでき、勝手に編集することがある (>_<)

上記のケースに当たる案件にたまたま担当してしまって
デグレった、バグったとならない為に個人的に作ってました。

補足

デフォルトの対象拡張子は php,tpl,js,css,html を対象としています。
会社でPHPプロジェクトを扱うことが多いので m(_ _)m

あとがき

元々 Python で書いてましたが Go にしたところ
4~5倍程度パフォーマンスアップしました!

並行処理についても
Pythonmultiprocessing がありますが
書き易さは Go かなと思いました。

ちなみに

実装に当たってこちら拝読させていただきました。
基礎的なGo言語の構文や環境構築、
Semaphore を意識した設計はとても参考になりました。

みんなのGo言語[現場で使える実践テクニック]

みんなのGo言語[現場で使える実践テクニック]

WEB+DB PRESS Vol.95

WEB+DB PRESS Vol.95