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は書くのが楽しいですね