[Oracle Cloud] Rcloneを使用して Object Storage から 異なる テナントの Object Storage へデーターをコピーしてみてみた




Rclone は、クラウド ストレージ上のファイルを管理するためのコマンドライン プログラムです。これは、クラウド ベンダーの Web ストレージ インターフェイスに代わる機能豊富な手段です。S3 オブジェクト ストア、ビジネスおよび消費者向けファイル ストレージ サービス、標準転送プロトコルなど、[40 を超えるクラウド ストレージ製品](https://rclone.org/#providers)がrclone をサポートしています。
Rclone には、UNIX コマンドの rsync、cp、mv、mount、ls、ncdu、tree、rm、および cat に相当する強力なクラウド機能があります。Rclone の使い慣れた構文には、シェル パイプラインのサポートと--dry-run保護が含まれています。コマンドライン、スクリプト、またはAPI経由で使用されます。
ということで、Oracle Object Storage から 異なる テナントの Object Storage へデーターを Copyしてみてみます。


# ■ 構成
今回、Oracle Cloud Infrastracture (OCI) Oracle Database Service の バックアップファイルを異なるTenancy、Region へコピーするために Rclone を使用します。
![構成1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4bc063cd-9167-b55a-1187-2fc1b14391ad.jpeg)
Oracle管理のバックアップをユーザー管理の Object Storage Bucketへコピーする方法は次を参考
・参考: [MV2BUCKET を使用して Oracle管理のバックアップをコピー](https://qiita.com/shirok/items/5908c20f70cf5bbc1fcf)

https://qiita.com/shirok/items/5908c20f70cf5bbc1fcf

# ■ Rcloneのインストール
Rclone は Extra Packages for Enterprise Linux (EPEL) もしくは、rclone.orgからインストールすることができます。


## ● 方法1: EPELから RPMダウンロード

・ [Oracel Linux EPEL](https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/x86_64/index.html)

https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/x86_64/index.html


### 1) Rclon ダウンロード
・wget で rcloneをダウンロード

```
[root@oci-inst ~]# wget https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/x86_64/getPackage/rclone-1.57.0-1.el8.x86_64.rpm
	--2023-03-04 11:31:26--  https://yum.oracle.com/repo/OracleLinux/OL8/developer/EPEL/x86_64/getPackage/rclone-1.57.0-1.el8.x86_64.rpm
	Resolving yum.oracle.com (yum.oracle.com)... 23.193.53.99, 2600:140b:a800:b90::2a7d, 2600:140b:a800:b88::2a7d
	Connecting to yum.oracle.com (yum.oracle.com)|23.193.53.99|:443... connected.
	HTTP request sent, awaiting response... 200 OK
	Length: 18654968 (18M) [application/x-rpm]
	Saving to: ‘rclone-1.57.0-1.el8.x86_64.rpm’

	rclone-1.57.0-1.el8.x86_64.rpm      100%[================================================================>]  17.79M  12.8MB/s    in 1.4s

	2023-03-04 11:31:29 (12.8 MB/s) - ‘rclone-1.57.0-1.el8.x86_64.rpm’ saved [18654968/18654968]
```


### 2) Rclone インストール

```
[root@oci-inst ~]# rpm -ivh rclone-1.57.0-1.el8.x86_64.rpm
	Verifying...                          ################################# [100%]
	Preparing...                          ################################# [100%]
	Updating / installing...
	   1:rclone-1.57.0-1.el8              ################################# [100%]
```

## ● 方法2: rclone.org からダウンロード

```
[root@db19c ~]# curl https://rclone.org/install.sh | sudo bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
	                                 Dload  Upload   Total   Spent    Left  Speed
	100  4669  100  4669    0     0   4285      0  0:00:01  0:00:01 --:--:--  4283
	Archive:  rclone-current-linux-amd64.zip
	   creating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/
	  inflating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/README.html  [text]
	  inflating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/rclone  [binary]
	  inflating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/README.txt  [text]
	  inflating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/rclone.1  [text]
	  inflating: tmp_unzip_dir_for_rclone/rclone-v1.61.1-linux-amd64/git-log.txt  [text]
	Purging old database entries in /usr/share/man...
	Processing manual pages under /usr/share/man...
	Purging old database entries in /usr/share/man/ja...
	Processing manual pages under /usr/share/man/ja...
	Purging old database entries in /usr/share/man/ru...
	Processing manual pages under /usr/share/man/ru...
	Purging old database entries in /usr/share/man/de...
	Processing manual pages under /usr/share/man/de...
	Purging old database entries in /usr/share/man/ko...
	Processing manual pages under /usr/share/man/ko...
	Purging old database entries in /usr/share/man/sk...
	Processing manual pages under /usr/share/man/sk...
	Purging old database entries in /usr/share/man/pl...
	Processing manual pages under /usr/share/man/pl...
	Purging old database entries in /usr/share/man/uk...
	Processing manual pages under /usr/share/man/uk...
	Purging old database entries in /usr/share/man/fr...
	Processing manual pages under /usr/share/man/fr...
	Purging old database entries in /usr/share/man/sv...
	Processing manual pages under /usr/share/man/sv...
	Purging old database entries in /usr/share/man/es...
	Processing manual pages under /usr/share/man/es...
	Purging old database entries in /usr/share/man/it...
	Processing manual pages under /usr/share/man/it...
	Purging old database entries in /usr/share/man/ca...
	Processing manual pages under /usr/share/man/ca...
	Purging old database entries in /usr/local/share/man...
	Processing manual pages under /usr/local/share/man...
	Updating index cache for path `/usr/local/share/man/man1'. Wait...done.
	Checking for stray cats under /usr/local/share/man...
	Checking for stray cats under /var/cache/man/local...
	1 man subdirectory contained newer manual pages.
	1 manual page was added.
	0 stray cats were added.
	0 old database entries were purged.
	
	rclone v1.61.1 has successfully installed.
	Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.
```


# ■ オブジェクト・ストレージの Rcloneの構成
構成の秘密キー、アクセス・キー、リージョンAPIエンドポイントおよびネームスペースを取得する必要があります。

# ● セキュリティ資格証明およびAPIエンドポイントの取得


最初に、秘密キーとアクセス・キーのペアを作成します。

### 1) OCI コンソール画面
右上にあるユーザーアイコンをクリックし、[ユーザー設定]をクリック
![00_OCIコンソール01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4916bacf-1817-0512-55d4-a689be2cf474.jpeg)



### 2) ユーザーの詳細画面
ページの左側の「顧客秘密キー」をクリック
![01_顧客秘密キー01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/f0234b6c-b197-86d5-6519-a1d3b972b5b0.jpeg)




### 3) [秘密キーの生成]画面
秘密キーの任意の名前を設定し、[秘密キーの生成] をクリック
![01_顧客秘密キー02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/de13a4d7-8144-38b8-b687-3f0e1aaacd5b.jpeg)

### 4) 生成されたキー画面
生成されたキーを確認
このパスワードはコピーし記録し、[閉じる]をクリック

	・生成されたキー: ItzAc1mE4jrhOcdiPWJGLHysS

![01_顧客秘密キー03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/be4019f3-96c0-fea8-bcdf-ca2f99049508.jpeg)


### 5) アクセスキー確認
作成した秘密キーに アクセス・キー　が表示されるので、コピーし記録します

	・アクセス・キー: cf2603c98906d3b8694ee35533e

![01_顧客秘密キー04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a9d0e910-9f15-e980-c899-67536318ae4f.jpeg)



## ● OCI Object Storage API エンドポイント確認
Object Storage APIエンドポイントは次の構文です。
<your_namespace>(ネームスペース) と　<your_region_identifier>(リージョン識別子)を設定します。
```
 https://<your_namespace>.compat.objectstorage.<your_region_identifier>.oraclecloud.com 
```

### 1) ネームスペース取得
ネームスペースは、コンソールから、またはコマンドライン・ツールを使用して識別できます。 
コンソールから「プロファイル」メニュー(ユーザー・メニュー・アイコン)を開き、テナント: <your_tenancy_name>をクリックします。ネームスペースの文字列は、「オブジェクト・ストレージ設定」の下にリストされています。 


もしくは、OCI CLI コマンドで確認できます

```
[root@oci-inst ~]# oci os ns get
	{
	"data": "shirok"
	}
```

### 2) リージョン識別子
リージョン識別子は次のドキュメントから対象リージョン識別子を確認できます

・[Oracle Cloud: リージョン](https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/regions.htm#top)

https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/regions.htm#top





# ■ Rclone設定
秘密キー、アクセス・キー、APIエンドポイントおよびリージョン識別子を設定したら、rclone構成ファイルで環境変数を設定して、rcloneを構成します。

### 1) rclone config file 確認
rclone config fileパスを確認

```
[root@oci-inst ~]# rclone config file
	Configuration file doesn't exist, but rclone will use this path:
	/root/.config/rclone/rclone.conf
```

### 2) config file作成
今回、2つの OCI Object Storage [oci-source] と [oci-target] を設定します。

```
[root@oci-inst ~]# vi /root/.config/rclone/rclone.conf
[root@oci-inst ~]# cat /root/.config/rclone/rclone.conf
	[oci-source]
	type = s3
	env_auth = false
	access_key_id = cf2603c98906d3b8694ee35533e
	secret_access_key = ItzAc1mE4jrhOcdiPWJGLHysS
	region = ap-tokyo-1
	endpoint = https://shirok.compat.objectstorage.ap-tokyo-1.oraclecloud.com
	location_constraint = ap-tokyo-1
	acl = private

	[oci-target]
	type = s3
	env_auth = false
	access_key_id = bh3855r7467s7485439eg9984ar
	secret_access_key = kLDkeuiDKJergioIAWEqMDIv
	region = ap-osaka-1
	endpoint = https://poc.compat.objectstorage.ap-osaka-1.oraclecloud.com
	location_constraint = ap-osaka-1
	acl = private
```


# ■ Rclone でコピー
設定した Object Storage [oci-source] から [oci-target] へファイルをコピーしてみてみます。


### 1) oci-source Bucketのファイル 確認
oci-source の Object Storage Buket にあるファイルを確認

```
[root@oci-inst ~]# rclone lsf oci-source:bucket-Backup-cdb_tokyo
	db19c/
	dbSys25zpcvoq/
	file_chunk/
	sbt_catalog/
```


### 2) rclone copy
[oci-source] の Bucket: bucket-Backup-cdb_tokyo から [oci-target]の Bucket: bucket-Backup-cdb_osakaへファイルコピーします

```
[root@oci-inst ~]# rclone copy oci-source:bucket-Backup-cdb_tokyo oci-target:bucket-Backup-cdb_osaka
```


### 3) rclone copy 完了確認 
[oci-target]の Bucket: bucket-Backup-cdb_osakaへファイルがコピーされたことを確認

```
[root@oci-inst ~]# rclone lsf oci-target:test-bucket
	db19c/
	dbSys25zpcvoq/
	file_chunk/
	sbt_catalog/
```


# ■ 参考
**・ Oracle Cloud**
　- [Rcloneを使用して、データをクラウドのオブジェクト・ストレージにコピー](https://docs.oracle.com/ja/solutions/move-data-to-cloud-storage-using-rclone/configure-your-source1.html#GUID-C3869127-3570-43C8-9750-77417A0A58CF)
　- [Rcloneのインストール](https://docs.oracle.com/ja/solutions/move-data-to-cloud-storage-using-rclone/install-rclone1.html#GUID-AB6E042A-CC01-4C57-AE82-56EFB36BCFDE)

**・ rclone.org**
　- [Rclone syncs your files to cloud storage](https://rclone.org/)