リモートサーバとローカルサーバとの差分のあるファイル情報を取得するツール作ってみた
概要
リモートサーバとローカルサーバとの差分のあるファイル情報を取得するツールを Golang で作成しました。
GitHub - kenzo0107/diffrelo: diffrelo is a tool to find the file differences between the remote server and the local workspace.
diffrelo is a tool to find the file differences between the remote server and the local workspace. - kenzo0107/diffrelo
どんなツールか 3 行まとめ
- ローカルワークスペースを元にリモートサーバからディレクトリと拡張子指定し実行ディレクトリ上にファイルをダウンロード
- ローカルのワークスペースから実行ディレクトリ上にファイルをコピー
- 1,2 で取得したファイルから差分をチェック
利用想定ケース
- リモートファイルサーバとローカルワークスペースの同期状況が不明瞭である場合
この 1 点のみです。
整備されたデプロイ環境では発生しにくいケースです。
ですが意外と多いです。
それはこんなケース
- 担当者が退職して引き継がれていない (>_<)
- ちょっとしたツールだし Git 管理してなかった (>_<)
- 別の業者さんがサーバにアクセスでき、勝手に編集することがある (>_<)
上記のケースに当たる案件にたまたま担当してしまって
デグレった、バグったとならない為に個人的に作ってました。
補足
デフォルトの対象拡張子は php,tpl,js,css,html を対象としています。
会社で PHP プロジェクトを扱うことが多いので m(_ _)m
あとがき
元々 Python で書いてましたが Go にしたところ
4~5 倍程度パフォーマンスアップしました!
並行処理についても
Python も multiprocessing がありますが
書き易さは Go かなと思いました。
ちなみに
実装に当たってこちら拝読させていただきました。
基礎的な Go 言語の構文や環境構築、
Semaphore を意識した設計はとても参考になりました。
リモートサーバとローカルサーバとの差分のあるファイル情報を取得するツール作ってみた
https://kenzo0107.github.io/2017/01/09/2017-01-10-detect-diff-between-local-and-remote/