LoginSignup
2
0

More than 3 years have passed since last update.

【OCI】Archive Storageを利用して低コストでバックアップを保管する。

Posted at

はじめに

OCIを操作するOracle Cloud Command Line Interface(OCI CLI)の実行環境を用意する。
なるべく環境を汚したくない&バージョンアップ楽にしたいタイプなのでDockerで用意します。

今回利用したDocker環境はGit hubで公開しています。
manaki-naoe/docker-oci-cli
【OCI】DockerでOCI-CLIを実行する。

アーカイブストレージについて

AWSでいう「Amazon S3 Glacier」
GCPでいう「Nearline Storage/Coldline Storage」にあたるサービスだと思っています。

低頻度アクセス向けのストレージ
1か月あたりGB 0.312円
データアクセスや最小オブジェクトサイズなど隠れたコストが無いため、
コスト計算ができ安全に利用できると思います。

復元まで
データの復元には約4時間ほどかかるそうです。

料金について

AWSやGCPでは取り出すために料金がものすごくかかってしまいますが、
OCIではストレージ料金とリクエスト費用しかかかりません。
0.jpg
画像参照先

Always Freeもあります

10GBのオブジェクト・ストレージ
10GBのアーカイブ・ストレージ

10GBまでが無料になっています。

準備

アーカイブストレージを作成する。

ダッシュボードからオブジェクト・ストレージを選択
1.jpg

バケットの作成をクリック
2.jpg

アーカイブストレージを利用する場合は必ずストレージ層を「アーカイブ」にしてください。
3.jpg

作成され終了です。
4.jpg

OCI CLIの実行環境を用意する。

Dockerfileをクローンする

$ git clone git@github.com:manaki-naoe/docker-oci-cli.git

イメージのビルド

$ docker build -t oci-cli .

ConfigファイルとAPI Keyの作成

$ docker run --rm -v ${PWD}/.oci:/root/.oci -it oci-cli:latest setup config

作成したAPI Keyの登録
ユーザーの詳細画面でAPI Keyを追加してください

5.jpg

コンパートメント用configの作成

$ docker run --rm -v ${PWD}/.oci:/root/.oci -it oci-cli:latest setup oci-cli-rc

# リポジトリ内はこんな構造になっているはずです。
- .oci
   - config
   - oci_api_key.pem
   - oci_api_key_public.pem
   - oci_cli_rc
- Dockerfile

$ vi .oci/oci_cli_rc
# 末尾に以下を追加します。
[DEFAULT]
compartment-id = <Compartment OCID>

以上で準備は終了です。

アーカイブストレージにアップロードする。

1ファイルだけアップロードする。

スクリプトを設置する

put.sh
#!/bin/bash
docker run --rm \
-v ${PWD}/.oci:/root/.oci \
-v <アップロードしたいファイルがあるディレクトリパス>:/root/bucket \
-it oci-cli:latest \
os object put \
--bucket-name <バケット名> \
--file /root/bucket/$1

実行

$ ./put.sh <ファイル名>

オブジェクト・ストレージの詳細ページでファイルがアップロードされていれば成功です。

ディレクトリ内のファイルをアップロードする。

スクリプトを設置する

bulk_upload.sh
#!/bin/bash
docker run --rm \
-v ${PWD}/.oci:/root/.oci \
-v <アップロードしたいファイルがあるディレクトリパス>:/root/bucket \
-it oci-cli:latest \
os object bulk-upload \
--bucket-name <バケット名> \
--src-dir /root/bucket \
--exclude .gitignore \
--no-overwrite

除外したファイルがあれば[--exclude]オプションで除外できます
例 --exclude .gitignore

--no-overwriteはすでに存在しているファイルをアップロードしないオプションです。

実行

$ ./bulk_upload.sh

オブジェクト・ストレージの詳細ページでファイルがアップロードされていれば成功です。

おわりに

コストの事前計算ができ、
取り出すための料金がリクエスト費用しかないため、
安心して取り出すことができます。

10GBまで無料でもあるので、
私はバックアップの保管に利用しています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0