バイナリぽん置きでファイルをGitHubに保存するツールを書いた

こんにちは。 whywrite.it 開発班のwhywaitaです。

標題の通りです。雑にサーバ上にバイナリ置いてcron等に登録したらバックアップが取れる!!みたいなのが欲しくて書きました。
名前はファイルを上に上げるというだけの思いつきです。

ファイルを雑にクラウド上に保存するソリューションとしてはrcloneなどが知られているのですが、rcloneもサーバごとにバックアップ設定を入れる必要があり少し面倒ということを感じていて作りました。

Gitで管理されているためどっかのタイミングで設定が変わっちゃったとかなどが起こりえる時に検知出来るのもとても便利ポイントです。
想定としてはサーバ上で動作するアプリケーションの設定をひたすらバックアップしておきたいなどに使っています。

簡単な動作説明

詳細な使い方はリポジトリのREADMEを参照していただくとして、このようにビルドします。

$ go build . -o grasshopper -ldflags '-X main.DefaultGitHubRepository=<your repo> -X main.DefaultGitHubUser=<your user> -X main.DefaultGitHubToken=<your token>'

これによりバイナリに認証情報が埋め込まれ、このバイナリをサーバに配置し実行するだけで自動的にバックアップが取れるソリューションです。
※コンパイル後のバイナリの扱いには十分注意してください、インターネット上に公開することは非推奨です

$ ./grasshopper README.md
2019/11/02 13:00:00 detect to change! backup is done! file: README.md

毎回ビルドするのはめんどくさい、一旦ビルドしたけどこのファイルは別の設定で扱いたいという人向けに環境変数で上書きできるようにもなっています

$ GH_GITHUB_REPO= GH_GITHUB_USER= GH_GITHUB_TOKEN= ./grasshopper <file>

Gitリポジトリには backup/{hostname}/{ファイルのフルパス} で保存するようにしています。

まとめ

どこに需要があるんやと言われると相当怪しいですが私には需要がある、それだけでいいんじゃなかろうか


コメントを残す