本ブログは、オラクル・クラウドの個人ブログの1つです。
初めに
Rclone は、クラウド・ストレージ上のファイルを管理するコマンドライン・プログラムです。OCI Object Storage、AWS S3、Azure Blob、Google Cloud Storageなど、多くのクラウドベンダーがサポートされています。On-Pからクラウドの間、あるいは異なるクラウド・ストレージ間でデータを簡単に転送できます。複数のクラウド・ベンダーを利用している場合、rcloneを利用すれば、データ転送が楽になります。
前回の記事で、AWS S3から、OCIオブジェクト・ストレージにデータをコピーする方法を紹介しました。(RcloneでAWS S3からOCIオブジェクト・ストレージにデータをコピー)
引き続き、Azure BlobからOCIオブジェクト・ストレージへのデータコピー方法をご紹介します。
ステップ
1. Rcloneのインストール
2. OCI接続用情報の収集 (コピー先)
3. Azureストレージ・アカウント接続用情報の収集 (コピー元)
4. OCI接続の設定 (コピー先)
5. Azureストレージ・アカウント接続の設定 (コピー元)
6. データコピーの実施
追記:OCIへの接続方法のアップデート
※STEP-1、STEP-2とSTEP-4は、前回(AWS->OCI)の内容と同じで、既に実施済であれば、スキップしてください。
事前準備
- OCI(Oracle Cloud Infrastructure)およびAzureのクラウドアカウント。
- Azureストレージ・アカウントを事前に作成しておきます。
- Rclone実行用クライアント。 (Linux/Mac/Windowsがサポートされています。ここではLinux7を使用しています。) HTTPSを使用し、クライアントからソース/ターゲット・クラウドに接続できることを確保してください。物理サーバ/VMか、On-P/Cloudか、構いません。(この例は、OCIにあるComputeインスタンスを利用します。)
1. Rcloneのインストール
非常に簡単で、一行のコマンドを実行すればOKです。
詳細なガイドについては、こちらを確認してください。(他のOSにインストールしたい場合。)
コマンド
curl https://rclone.org/install.sh | sudo bash
[opc@linux7 ~]$ curl https://rclone.org/install.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4497 100 4497 0 0 4794 0 --:--:-- --:--:-- --:--:-- 4794
Archive: rclone-current-linux-amd64.zip
......
rclone v1.56.0 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.
[opc@linux7 ~]$
2. OCI接続用情報の収集 (コピー先)
接続を構成するには、OCIコンソールから下記の情報を収集する必要があります。
アクセス・キー(Access Key)と秘密キー(Secret Key)
リージョン識別子(Region Identifier)
オブジェクト・ストレージ・ネームスペース(Object Storage Namespace)
APIエンドポイント(API Endpoint)
アクセス・キーと秘密キー
OCIから収集方法に関するドキュメント・リンクはこちらです。
MENU->Identity & Secruity->Identity->Users->User Details->Customer Secret Keys
「コピー」をクリックして保存します。 (秘密キーは二度と表示されないので、ご注意ください。)
作成後、「アクセス・キー」は以下のように表示され、いつでもコピーできます。
リージョン識別子
メニューバーのリージョン名をクリックし、「リージョンの管理」を選択すると、リージョン識別子が表示されます。この例は東京リージョン(ap-tokyo-1)を使用しています。
オブジェクト・ストレージ・ネームスペース
Azureは初クラウドの方は、このネームスペースをAzureのストレージ・アカウントの名前だと理解していただければOKです。
MENU->Governance & Administration->Account Management->Tenancy Details
OCI CLIが既にインストールと設定済なら、oci os ns get
のコマンドでも簡単にネームスペースを確認できます。
APIエンドポイント
"Object_Storage_Namespace"と"Region_Identifier"の文字列を収集したものに置き換えて、以下のようにAPIエンドポイントの文字列を作成します。
https://<Object_Storage_Namespace>.compat.objectstorage.<Region_Identifier>.oraclecloud.com
3. Azureストレージ・アカウント接続用情報の収集 (コピー元)
Storage Accounts -> Security + Networking -> Access Keys
以下の画面でストレージ・アカウント名をコピーしてください。"Show Keys"をクリックし、キーの内容を表示します。
キーが表示されたら、右側のコピー・マークをクリックし、コピーします。
接続の時、ストレージ・アカウント名とアクセス・キーを利用しますので、メモしておいてください。
4. OCI接続の設定 (コピー先)
コマンド: rclone config
以下の情報を入力します。
- 「n」を入力、接続を新規作成します。
- 接続名を入力します。(例:「oci」)
- 「4」を選択します。(S3準拠のストレージ・プロバイダー)
- 「14」を選択します。(他のS3互換プロバイダー)
[opc@linux7 ~]$ rclone config
2021/09/10 12:30:23 NOTICE: Config file "/home/opc/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> oci
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
......
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
\ "s3"
......
Storage> 4
Choose your S3 provider.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
......
14 / Any other S3 compatible provider
\ "Other"
provider> 14
以下の情報を入力します。
5. 「1」を入力します(次のステップでクレデンシャルを入力することを意味します)。
6. 「アクセス・キー」を入力します(OCIコンソールから作成された)。
7. 「秘密キー」を入力します(OCIコンソールから作成された)。
8. リージョン識別子を入力します。(例:「ap-tokyo-1」)
9. 「APIエンドポイント」を入力します。
Get AWS credentials from runtime (environment variables or EC2/ECS meta data if no env vars).
Only applies if access_key_id and secret_access_key is blank.
Enter a boolean value (true or false). Press Enter for the default ("false").
Choose a number from below, or type in your own value
1 / Enter AWS credentials in the next step
\ "false"
2 / Get AWS credentials from the environment (env vars or IAM)
\ "true"
env_auth> 1
AWS Access Key ID.
Leave blank for anonymous access or runtime credentials.
Enter a string value. Press Enter for the default ("").
access_key_id> Your_Access_Key
AWS Secret Access Key (password)
Leave blank for anonymous access or runtime credentials.
Enter a string value. Press Enter for the default ("").
secret_access_key> Your_Secret_Key
Region to connect to.
Leave blank if you are using an S3 clone and you don't have a region.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Use this if unsure. Will use v4 signatures and an empty region.
\ ""
2 / Use this only if v4 signatures don't work, e.g. pre Jewel/v10 CEPH.
\ "other-v2-signature"
region> ap-tokyo-1
Endpoint for S3 API.
Required when using an S3 clone.
Enter a string value. Press Enter for the default ("").
endpoint> https://your_namespace.compat.objectstorage.ap-tokyo-1.oraclecloud.com
以下の情報を入力し、設定を完了します。
10. 「location_constraint」のプロンプトが表示されたら、Enterキーを押します。 (デフォルト)
11. ACLに「1」(プライベート)を入力します。(デフォルト)
12. もっと詳細な設定が必要ない場合は、「n」を入力します。(デフォルト)
13. 「y」を入力して確認します。(デフォルト)
Location constraint - must be set to match the Region.
Leave blank if not sure. Used when creating buckets only.
Enter a string value. Press Enter for the default ("").
location_constraint>
Canned ACL used when creating buckets and storing or copying objects.
......
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Owner gets FULL_CONTROL. No one else has access rights (default).
\ "private"
......
acl> 1
Edit advanced config?
y) Yes
n) No (default)
y/n> n
--------------------
[oci]
type = s3
provider = Other
access_key_id = Your_Access_Key
secret_access_key = Your_Secret_Key
region = ap-tokyo-1
endpoint = https://your_namespace.compat.objectstorage.ap-tokyo-1.oraclecloud.com
acl = private
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
oci s3
ここまで、OCI接続の設定は完了です。接続可否を確認します。
OCI接続の確認
すべてのバケットを一覧表示します。
コマンド: rclone lsd <remote:>
リモート名の末尾に":"があることに注意してください。
[opc@linux7 ~]$ rclone lsd oci:
-1 2021-09-10 14:47:45 -1 Target_Bucket
[opc@linux7 ~]$
5. Azureストレージ・アカウント接続の設定 (コピー元)
コマンド: rclone config
以下の情報を入力します。
- 「n」を入力、接続を新規作成します。(New remote)
- "name>":接続名を入力します。(例:「azure」)
- "Storage>":「25」を選択します。(azureblob)
- "account>":ストレージ・アカウント名を入力します(上記STEP-3で取得した情報)。
[opc@linux7 ~]$ rclone config
Current remotes:
Name Type
==== ====
oci s3
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> azure
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
......
25 / Microsoft Azure Blob Storage
\ "azureblob"
......
Storage> 25
Storage Account Name (leave blank to use SAS URL or Emulator)
Enter a string value. Press Enter for the default ("").
account> azure2oci
以下の情報を入力します。
5. "service_principal_file>": リターンを入力します。(デフォルト)
6. "key>": 「アクセス・キー」を入力します(上記STEP-3で取得した情報)。
7. "sas_url>": リターンを入力します。(デフォルト)
8. "use_msi>": リターン(false)を入力します。(デフォルト)
9. "use_emulator>": リターン(false)を入力します。(デフォルト)
Path to file containing credentials for use with a service principal.
Leave blank normally. Needed only if you want to use a service principal instead of interactive login.
$ az ad sp create-for-rbac --name "<name>" \
--role "Storage Blob Data Owner" \
--scopes "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container>" \
> azure-principal.json
See ["Create an Azure service principal"](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) and ["Assign an Azure role for access to blob data"](https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad-rbac-cli) pages for more details.
Enter a string value. Press Enter for the default ("").
service_principal_file>
Storage Account Key (leave blank to use SAS URL or Emulator)
Enter a string value. Press Enter for the default ("").
key> <Your_Access_Key>
SAS URL for container level access only
(leave blank if using account/key or Emulator)
Enter a string value. Press Enter for the default ("").
sas_url>
Use a managed service identity to authenticate (only works in Azure)
When true, use a [managed service identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/)
to authenticate to Azure Storage instead of a SAS token or account key.
If the VM(SS) on which this program is running has a system-assigned identity, it will
be used by default. If the resource has no system-assigned but exactly one user-assigned identity,
the user-assigned identity will be used by default. If the resource has multiple user-assigned
identities, the identity to use must be explicitly specified using exactly one of the msi_object_id,
msi_client_id, or msi_mi_res_id parameters.
Enter a boolean value (true or false). Press Enter for the default ("false").
use_msi>
Uses local storage emulator if provided as 'true' (leave blank if using real azure storage endpoint)
Enter a boolean value (true or false). Press Enter for the default ("false").
use_emulator>
他の設定にはデフォルトのオプション(Enterキーを押す)を使用しますので、ここでは省略します。設定の最後は、次のようになります。
Edit advanced config?
y) Yes
n) No (default)
y/n>
--------------------
[azure]
type = azureblob
account = azure2oci
key = <Your_Access_Key>
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
Current remotes:
Name Type
==== ====
azure azureblob
oci s3
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
[opc@linux7 ~]$
これで、ソース/ターゲット・クラウドへの接続が正常に構成されました。以下のコマンドで接続を確認できます。
Azure接続の確認
Command:
rclone listremotes - 設定ファイルから利用可能なすべてのリモートを一覧表示します。
rclone lsd <remote:> - バケット一覧を表示します。 (":"を忘れずに)
rclone ls <remote:path> - 指定されたバケット内のすべてのオブジェクトを一覧表示します。
[opc@linux7 ~]$ rclone listremotes
azure:
oci:
[opc@linux7 ~]$ rclone lsd azure:
-1 2021-10-14 04:05:19 -1 azure-2-oci
[opc@linux7 ~]$ rclone ls azure:azure-2-oci
747 tmp1.txt
257 tmp2.txt
3346 tmp3.txt
10509 tmp4.txt
1572 tmp5.txt
933 tmp6.txt
1080 tmp7.txt
1232 tmp8.txt
1233 tmp9.txt
[opc@linux7 ~]$
接続情報は、rclone.confという設定ファイルに保存されます。
rclone.confの格納先
Windowsの場合:%APPDATA%/rclone/rclone.conf
その以外:~/.config/rclone/rclone.conf
6. データコピーの実施
コピー前:
現在、ターゲットバケットには何もない状態です。
[opc@linux7 ~]$ rclone ls oci:Target_Bucket
[opc@linux7 ~]$
コピー用コマンド:
rclone copy source:sourcepath dest:destpath
必要に応じてフラグ(オプション)を追加できます。
--verbose - 出力結果に多くのメッセージを出すように。
--dry-run - 何もコピーせずにテストだけをする。
-P/--progress - リアルタイムの転送統計を表示するフラグ。
--max-age 24h - 最近変更された(24時間)すべてのファイルをコピーする
"rclone copy"コマンドの詳細を知りたい方は、こちらのマニュアル をご確認ください。
コマンドの出力結果:
[opc@linux7 ~]$ rclone --verbose copy azure:azure-2-oci oci:Target_Bucket
2021/10/14 06:57:06 INFO : tmp2.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp3.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp1.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp4.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp6.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp5.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp8.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp7.txt: Copied (new)
2021/10/14 06:57:07 INFO : tmp9.txt: Copied (new)
2021/10/14 06:57:07 INFO :
Transferred: 20.419Ki / 20.419 KiByte, 100%, 0 Byte/s, ETA -
Transferred: 9 / 9, 100%
Elapsed time: 1.2s
[opc@linux7 ~]$
コピー後:
これで、ソースバケットのデータがコピーされました。
[opc@linux7 ~]$ rclone ls oci:Target_Bucket
747 tmp1.txt
257 tmp2.txt
3346 tmp3.txt
10509 tmp4.txt
1572 tmp5.txt
933 tmp6.txt
1080 tmp7.txt
1232 tmp8.txt
1233 tmp9.txt
[opc@linux7 ~]$
以上です。
追記:OCIへの接続方法のアップデート
追記日: 2023/4/21
OCIへの接続を立てる時、従来の「S3準拠のストレージ・プロバイダー」以外、OCI Nativeの設定方法も可能になりました。
ストレージのタイプを選択する時、次のように、「34」(OCI Object Storage)を指定してください。
[opc@linux8 ~]$ rclone config
2023/04/21 13:49:27 NOTICE: Config file "/home/opc/.config/rclone/rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> oci
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
......
34 / Oracle Cloud Infrastructure Object Storage
\ (oracleobjectstorage)
......
Storage> 34
認証方法は、次のようにいくつかを指定できます。今回は「2」(configファイルを利用)を例にして説明します(このconfigファイルは、OCI CLIにも利用できます)。
Option provider.
Choose your Auth Provider
Choose a number from below, or type in your own string value.
Press Enter for the default (env_auth).
1 / automatically pickup the credentials from runtime(env), first one to provide auth wins
\ (env_auth)
/ use an OCI user and an API key for authentication.
2 | you'll need to put in a config file your tenancy OCID, user OCID, region, the path, fingerprint to an API key.
| https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm
\ (user_principal_auth)
/ use instance principals to authorize an instance to make API calls.
3 | each instance has its own identity, and authenticates using the certificates that are read from instance metadata.
| https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/callingservicesfrominstances.htm
\ (instance_principal_auth)
4 / use resource principals to make API calls
\ (resource_principal_auth)
5 / no credentials needed, this is typically for reading public buckets
\ (no_auth)
provider> 2
必要な情報を入力します。
- オブジェクト・ストレージ・ネームスペース:STEP-2で取得したもの
- Compartment OCID: バケットの置き場所
- リージョン識別子:STEP-2で取得したもの
- APIエンドポイント:デフォルトでよい
- configファイルの場所:デフォルトでよい (~/.oci/config)
- プロファイル:デフォルトでよい
Option namespace.
Object storage namespace
Enter a value.
namespace> <Your_Object_Storage_Namespace>
Option compartment.
Object storage compartment OCID
Enter a value.
compartment> <Your_CompartmentOcid>
Option region.
Object storage Region
Enter a value.
region> <Your_Region_ID>
Option endpoint.
Endpoint for Object storage API.
Leave blank to use the default endpoint for the region.
Enter a value. Press Enter to leave empty.
endpoint>
Option config_file.
Path to OCI config file
Choose a number from below, or type in your own string value.
Press Enter for the default (~/.oci/config).
1 / oci configuration file location
\ (~/.oci/config)
config_file>
Option config_profile.
Profile name inside the oci config file
Choose a number from below, or type in your own string value.
Press Enter for the default (Default).
1 / Use the default profile
\ (Default)
config_profile>
Edit advanced config?
y) Yes
n) No (default)
y/n> n
設定内容を確認した上、保存します。
Configuration complete.
Options:
- type: oracleobjectstorage
- provider: user_principal_auth
- namespace: <Your_Object_Storage_Namespace>
- compartment: <Your_CompartmentOcid>
- region: <Your_Region_ID>
Keep this "oci" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
OCI構成ファイル
configファイルを用意して、~/.oci/config
に保存します。
ファイル作成方法の詳細は、次の記事をご参照ください。
「OCIカスタム・メトリックでディスク使用率を監視」の事前準備
OCI接続の確認
すべてのバケットを一覧表示します。
コマンド: rclone lsd <remote:>
[opc@linux8 ~]$ rclone lsd oci:
-1 2021-09-10 14:47:45 -1 Target_Bucket
[opc@linux8 ~]$
改訂歴
2021年11月:初版作成
2023年4月:OCIへの接続方法のアップデート
関連記事
オラクル・クラウドの個人ブログ一覧
Azure BlobからOracle DBにデータを導入する
RcloneでAWS S3からOCIオブジェクト・ストレージにデータをコピー
OCI Cloud Shellにrcloneをインストールする