フリーのオブジェクトストレージへのバックアップソフト kopia

投稿者: | 7月 7, 2022

オブジェクトストレージって、クラウドのパーツの中で一番古いということをあまり知られていない。(自分が最初にAWSを最初に契約したときは、EC2はなく、S3のみ、その後EC2が出てきたが、EBSもなし、ターミネートするとディスクが消えるという安全設計、もとい、S3と連携前提だった。)また、オブジェクトストレージはあまりパフォーマンスがよくなく、普通のストレージとして使うにはちょっと難しい。さらに、オブジェクトストレージはあくまでも「オブジェクト」を置くストレージなので、ビジブルなファイルデータを置くのも適さない。(それをやりたがる人が多いけど)

オブジェクトストレージを使う基本は、自分からビジブルにアクセスをするのではなく、オブジェクトストレージをハンドリングできるアプリケーションから間接的に使うことだと思う。(あくまでも1例だが。)

オブジェクトストレージを一番簡単に有効利用ができるのがバックアップソフトである。バックアップソフトのバックアップストレージとしてオブジェクトストレージが使える。バックアップソフトだとリテンションをもつので、オブジェクトストレージの利用データ量がある程度制御ができる。つまりコストがある程度見える。反面、オブジェクトストレージを使えるバックアップソフトは、有償製品だったり、商用NASのアプリケーションだったり、なかなかフリーのいい感じのソフトウェアがない。

githubを彷徨っていたら、それらしきソフトを発見。「kopia」というソフトウェア。
https://github.com/kopia/kopia

この手のソフトウェアって、コマンドラインツールしかないのが多いが、なんとGUIもあった。早速触ってみた。

まず、kopiaは何ができるのか?

  • バックアップ対象:   ファイルパス
  • バックアップストレージ:バックアップストレージをRepositoryといい、ファイルシステムやオブジェクトストレージなどが利用できる。
  • バックアップの方式:  スナップショット(ただし静止点まではとっていないっぽい)
  • バックアップタスク:  ポリシーベースの設定
  • リストア:       ファイルレベルリストア

つまり、ファイルバックアップをオブジェクトストレージに保存をする。

早速インストール

https://kopia.io/docs/installation/
homebrewとかでもインストールができるが、
https://github.com/kopia/kopia/releases/tag/v0.11.2/ からダウンロードしてインストールをした。Windows,Linuxなど様々のバイナリーがあり、GUI版もある。
自分の環境は、MACでGUIを使いたかったので、以下をダウンロード。ちなみにGUI版を落とすとGUIはIntelバイナリで、アプリケーション自体はUniversalバイナリ。
https://github.com/kopia/kopia/releases/download/v0.11.1/KopiaUI-0.11.2.dmg

バックアップ先のオブジェクトストレージはminioを利用した。kopiaで利用するバケットは事前に作成しておく。

アプリケーションをコピーしたらまずは実行。いきなりこんな画面になる。ここで利用したいオブジェクトストレージなどを指定する。Backblaze B2が独立したエントリーな理由はなぞ。

UntitledImage

Minioの登録は以下のように行う。近頃、オレオレ証明書は使いにくいので、MinioにはLet’s Encryptのドメイン証明書を設定している。

UntitledImage

Nextをクリックすると、暗号化パスワードを聞いてくる。このパスワードは、バックアップデータ自体に保存されるので、バックアップデータ自体はポータブル。ただし、パスワードを忘れるとパスワードリカバリーが不可能なので、覚えておくこと。

UntitledImage

これで設定完了。Repository(バックアップストレージ)の情報は、全てバケットに入っているので、オブジェクトストレージの接続情報と暗号化パスワードを入力すればいつでもデータにアクセスができる。

 

バックアップパスの指定

バックアップの指定は、Snapshotでファイルパスを指定して行う。New Snapshotをクリック

UntitledImage

バックアップ先はファイルパスを指定する。とりあえずローカルのgitのフォルダを指定してみた。リテンションが指定できる。

UntitledImage

さらにバックアップスケジュールも指定できる。

UntitledImage

スナップショット取得前に容量の見積もりができる。

UntitledImage

1度目のスナップショット。

UntitledImage

以後のスナップショットは変更されたファイルだけアップロードされる。

ちなみにMinioではこのように表示される。

UntitledImage

それにしてもMinioのUIがよく変わるw

 

ポリシーの変更

Policiesで変更可能。

UntitledImage

 

リストア

Snapshotをドリルダウン。

UntitledImage

以下がリストアオプション

UntitledImage

実際のリストア。リストア先のフォルダは先に作っておく。

UntitledImage

ぱーっと流したけどこんな感じ。

ファイルバックアップをオブジェクトストレージに定期的にリテンションを持たせて保存するには便利。ポリシーも組めるので普通にバックアップ用途で使える。今回はGUIを使ったが、コマンドラインでも使える。

各UIにコマンドラインを表示してくれるボタンが付いている。

UntitledImage

重複排除もテストしてみた。

200MBのファイルを10個つくってバックアップしてみた。2.1GBが全体量で、転送量が209.7MBだった。つまり重複排除が効いている。

UntitledImage

 

コマンドラインのインストール

MAC/Linuxならbrewでのインストールが楽。自動補完まで入れてくれる。

brew install kopia

GUIで作ったRepositoryを以下のコマンドで接続してみる。

kopia repository connect s3 --bucket kopiatest --access-key xxxxxxxx --secret-access-key xxxxxxxx --endpoint="<endpoint>"

Repositoryを接続する場合は、設定されている暗号化パスワードが聞かれるので入力。

以下でスナップショットが確認できる。

kopia snapshot list --all

XXXX@XXXXXXXXXXXXXXX:/Users/XXXX/Documents/GitHub
2022-06-13 23:54:18 UTC k4dac4062a6af76dc366991ab93fdf301 1.8 MB drwxr-xr-x files:607 dirs:277 (latest-1..5,hourly-1..4,daily-1,weekly-1,monthly-1,annual-1)
+ 4 identical snapshots until 2022-06-14 02:00:00 UTC

このアプリのいいところは、開発が絶賛続いているところ。実際ファイルシステムのバックアップをオブジェクトストレージに保存するならこれで十分かもしれない。プラットフォームもかなり充実している。
別の使い方としては、コマンドラインも充実しているということから、起動時にオブジェクトストレージからデータをリストアして、シャットダウン時にオブジェクトストレージに保存し直すという、クラウドに依存しない、インスタンスをエフェメラルなものとして利用することも可能かと思う。(昔のEC2の使い方)

なんとなくオブジェクトストレージにフォルダを保存したいなぁという時にはめちゃくちゃ便利。

コメントを残す