Golang
の勉強&必要にかられて、shinofara/standという、バックアップツールを作りました。
まだまだ機能は少ないですが
今ある機能
-
zip
,tar + gzip
に対応 - マウント先などローカルからアクセス可能なディレクトリへの保存や、S3への保存
- 世代管理(過去何代まで保存するか)
これから実装予定
- ファイルの暗号化・復号化
- リストアの仕組み
使い方(Usage)
インストール
$ go install github.com/shinofara/stand
もしくは、Releaseから最新のバイナリを取得
現在はMacと、Linux64bitsupport
※これ以外のOSの場合は、自前でお願いします。
シンプルな使い方
$ stand -c /path/to/config.yml
YAMLの構成
# /path/to/config.yml
- type: file
path: "/path/to/file/path"
storages:
- path: "/path/to/local/directory"
life_cycle: 1
- type: dir
path: "/path/to/compress/target/directory"
compression:
prefix: sample # prefix_YYYYMMDDHHMiss.zip
format: zip # or tar
storages:
type: s3
path: "/path/to/s3/path"
life_cycle: 2
s3:
access_key_id: AKXXXXXXXXXXXX
secret_access_key: yXxxxxxxXXXXXXXXXXXXXXXX
region: "ap-northeast-1"
bucket_name: "backup_bucket_name"
ACCESS_KEY
などは環境変数でも可能
$ export AWS_ACCESS_KEY_ID=AKIXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ export AWS_DEFAULT_REGION=ap-northeast-1
最後に
まだまだ機能追加する予定、そしてテストもちゃんと書かねば
あとはエラー制御とか課題は多いけど、、、
結論
Golangは書くのが楽しいですね