目次
事前準備
事前準備として、以下の3つの手順を実施する必要があります。
手順1_Object Storageの作成
まず、接続先となるバケットを作成します。
OCIコンソールにログインし、左上のハンバーガーアイコン>[ストレージ]>[バケット]>コンパートメントを選択>[バケットの作成] を押下します。
バケットの作成画面が展開するので、必要な項目を入力した後 [作成] を押下します。
また、後ほど接続する際に必要になるので、作成したリージョンの識別子を控えておきます。
※バケットの可視性はプライベートでも、Rcloneコマンドで参照できるため問題ありません。
※リージョン識別子についてわからない場合はこちらを参考にしてください。
手順2_顧客秘密キーの作成
次に、RcloneでObject Storageへ接続するために必要な顧客秘密キーを作成します。
a)IDCS統合版の場合
顧客秘密キーを作成したいユーザでOCIコンソールにログインした後、
OCIコンソール右上のプロファイル> [自分のプロファイル] > [顧客秘密キー] > [顧客秘密キーの生成] を押下します。
※IDCS統合版で、左上のハンバーガーアイコンから進んでいき、顧客秘密キーを作成しようとするとエラーとなるバグが発生しているので注意してください。(2022/09/15 時点)
b)IDCS統合前の場合
OCIコンソール左上のハンバーガーアイコン> [アイデンティティとセキュリティ] > [ユーザー] >任意のユーザーを選択> [顧客秘密キー] > [秘密キーの作成] を押下します。
任意の名前を入力し作成したら、忘れずに秘密キーとアクセスキーを控えておきます。
※秘密キーは作成後一度しか表示されないので注意してください。
手順3_エンドポイントの確認
RcloneでObject Storageへ接続する際のホスト名は以下のようになります。
リージョン識別子は手順1で控えてあるので、オブジェクト・ストレージ・ネームスペースを確認しておきます。
https://<オブジェクト・ストレージ・ネームスペース>.compat.objectstorage.<リージョン識別子>.oraclecloud.com
・オブジェクトストレージネームスペースの確認方法
OCIコンソール右上のプロファイル> [テナンシ:***(テナンシ名)] を押下します。
テナンシの詳細画面が展開するので、画面中央の [テナンシ情報] > [オブジェクト・ストレージ・ネームスペース] を確認します。
・OCI CLIで確認する場合
※OCI CLIとは、OCIのオブジェクトやサービスをCLI上で操作できるツールで、インストールが必要ですが、OCIコンソールから接続できるCloud Shellを使用すればインストール不要でOCI CLIを使用できます。詳しくはこちらを参照してください。
OCI CLIが使用できる環境下で以下のコマンドを打つことでも確認できます。
oci os ns get
事前準備は以上となります。
Rcloneのインストール
次に接続元(ローカル側)へRcloneをインストールしていきます。
インストール自体はとても簡単で、root権限ユーザで以下のコマンドを実行するだけです。
curl https://rclone.org/install.sh | sudo bash
rclone <バージョン> has successfully installed.と表示されればOKです。
※Rcloneのインストールについて、詳細はこちらを参照してください。
Rclone構成ファイルの作成
次にObject Storageへ接続するための構成ファイルを作成していきます。
以下のコマンドを実行し、対話形式で必要な情報を入力していくことで構成ファイルを作成できます。
rclone config
本環境で入力した情報は以下の通りです。
※赤字は実際の入力内容、青字は解説のためのコメントです。
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> objectstorage #任意の接続名を入力
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
\ (fichier)
2 / Akamai NetStorage
\ (netstorage)
3 / Alias for an existing remote
\ (alias)
4 / Amazon Drive
\ (amazon cloud drive)
5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, Digital Ocean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS and Wasabi
\ (s3)
6 / Backblaze B2
\ (b2)
7 / Better checksums for other remotes
\ (hasher)
8 / Box
\ (box)
9 / Cache a remote
\ (cache)
10 / Citrix Sharefile
\ (sharefile)
11 / Combine several remotes into one
\ (combine)
12 / Compress a remote
\ (compress)
13 / Dropbox
\ (dropbox)
14 / Encrypt/Decrypt a remote
\ (crypt)
15 / Enterprise File Fabric
\ (filefabric)
16 / FTP
\ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
\ (google cloud storage)
18 / Google Drive
\ (drive)
19 / Google Photos
\ (google photos)
20 / HTTP
\ (http)
21 / Hadoop distributed file system
\ (hdfs)
22 / HiDrive
\ (hidrive)
23 / Hubic
\ (hubic)
24 / In memory object storage system.
\ (memory)
25 / Internet Archive
\ (internetarchive)
26 / Jottacloud
\ (jottacloud)
27 / Koofr, Digi Storage and other Koofr-compatible storage providers
\ (koofr)
28 / Local Disk
\ (local)
29 / Mail.ru Cloud
\ (mailru)
30 / Mega
\ (mega)
31 / Microsoft Azure Blob Storage
\ (azureblob)
32 / Microsoft OneDrive
\ (onedrive)
33 / OpenDrive
\ (opendrive)
34 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ (swift)
35 / Pcloud
\ (pcloud)
36 / Put.io
\ (putio)
37 / QingCloud Object Storage
\ (qingstor)
38 / SSH/SFTP
\ (sftp)
39 / Sia Decentralized Cloud
\ (sia)
40 / Storj Decentralized Cloud Storage
\ (storj)
41 / Sugarsync
\ (sugarsync)
42 / Transparently chunk/split large files
\ (chunker)
43 / Union merges the contents of several upstream fs
\ (union)
44 / Uptobox
\ (uptobox)
45 / WebDAV
\ (webdav)
46 / Yandex Disk
\ (yandex)
47 / Zoho
\ (zoho)
48 / premiumize.me
\ (premiumizeme)
49 / seafile
\ (seafile)
Storage> 5 #AmazonS3準拠ストレージ
Option provider.
Choose your S3 provider.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
1 / Amazon Web Services (AWS) S3
\ (AWS)
2 / Alibaba Cloud Object Storage System (OSS) formerly Aliyun
\ (Alibaba)
3 / Ceph Object Storage
\ (Ceph)
4 / China Mobile Ecloud Elastic Object Storage (EOS)
\ (ChinaMobile)
5 / Cloudflare R2 Storage
\ (Cloudflare)
6 / Arvan Cloud Object Storage (AOS)
\ (ArvanCloud)
7 / Digital Ocean Spaces
\ (DigitalOcean)
8 / Dreamhost DreamObjects
\ (Dreamhost)
9 / Huawei Object Storage Service
\ (HuaweiOBS)
10 / IBM COS S3
\ (IBMCOS)
11 / IDrive e2
\ (IDrive)
12 / Seagate Lyve Cloud
\ (LyveCloud)
13 / Minio Object Storage
\ (Minio)
14 / Netease Object Storage (NOS)
\ (Netease)
15 / RackCorp Object Storage
\ (RackCorp)
16 / Scaleway Object Storage
\ (Scaleway)
17 / SeaweedFS S3
\ (SeaweedFS)
18 / StackPath Object Storage
\ (StackPath)
19 / Storj (S3 Compatible Gateway)
\ (Storj)
20 / Tencent Cloud Object Storage (COS)
\ (TencentCOS)
21 / Wasabi Object Storage
\ (Wasabi)
22 / Any other S3 compatible provider
\ (Other)
provider> 22 #その他のS3準拠ストレージプロバイダー
Option env_auth.
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.
Choose a number from below, or type in your own boolean value (true or false).
Press Enter for the default (false).
1 / Enter AWS credentials in the next step.
\ (false)
2 / Get AWS credentials from the environment (env vars or IAM).
\ (true)
env_auth> 1 #次のステップで認証情報を入力
Option access_key_id.
AWS Access Key ID.
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
access_key_id> 921c2*******************************acd76 #事前準備の手順2で用意したアクセスキーを入力
Option secret_access_key.
AWS Secret Access Key (password).
Leave blank for anonymous access or runtime credentials.
Enter a value. Press Enter to leave empty.
secret_access_key> cX8Xf***********************************AZEg= #事前準備の手順2で用意した秘密キーを入力
Option region.
Region to connect to.
Leave blank if you are using an S3 clone and you don't have a region.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
/ Use this if unsure.
1 | Will use v4 signatures and an empty region.
\ ()
/ Use this only if v4 signatures don't work.
2 | E.g. pre Jewel/v10 CEPH.
\ (other-v2-signature)
region> ap-tokyo-1 #事前準備の手順1で確認したリージョン識別子を入力
Option endpoint.
Endpoint for S3 API.
Required when using an S3 clone.
Enter a value. Press Enter to leave empty.
endpoint> https://**********.compat.objectstorage.ap-tokyo-1.oraclecloud.com #事前準備の手順3で確認したエンドポイントを入力
Option location_constraint.
Location constraint - must be set to match the Region.
Leave blank if not sure. Used when creating buckets only.
Enter a value. Press Enter to leave empty.
location_constraint> #ブランクでOK
Option acl.
Canned ACL used when creating buckets and storing or copying objects.
This ACL is used for creating objects and if bucket_acl isn't set, for creating buckets too.
For more info visit https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl
Note that this ACL is applied when server-side copying objects as S3
doesn't copy the ACL from the source but rather writes a fresh one.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
/ Owner gets FULL_CONTROL.
1 | No one else has access rights (default).
\ (private)
/ Owner gets FULL_CONTROL.
2 | The AllUsers group gets READ access.
\ (public-read)
/ Owner gets FULL_CONTROL.
3 | The AllUsers group gets READ and WRITE access.
| Granting this on a bucket is generally not recommended.
\ (public-read-write)
/ Owner gets FULL_CONTROL.
4 | The AuthenticatedUsers group gets READ access.
\ (authenticated-read)
/ Object owner gets FULL_CONTROL.
5 | Bucket owner gets READ access.
| If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
\ (bucket-owner-read)
/ Both the object owner and the bucket owner get FULL_CONTROL over the object.
6 | If you specify this canned ACL when creating a bucket, Amazon S3 ignores it.
\ (bucket-owner-full-control)
acl> 1 #プライベートを選択
Edit advanced config?
y) Yes
n) No (default)
y/n> n #詳細設定が必要な場合はyを入力
Configuration complete.
Options:
- type: s3
- provider: Other
- access_key_id: 921c2c4726472ba5c683191bec44852ad46acd76
- secret_access_key: cX8XfVD+W9z2t/6DdDkUP3LiNauJpGQzxK9M9qQAZEg=
- region: ap-tokyo-1
- endpoint: https://cloudii.compat.objectstorage.ap-tokyo-1.oraclecloud.com
- acl: private
Keep this "objectstorage" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y #入力内容に誤りがないかを確認
Current remotes:
Name Type
==== ====
objectstorage 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 #終了
(終盤に出てきた詳細設定でYesを入力すると、bucketのACL設定から始まり、かなり細かい設定ができるみたいでした。気になる方は試してみてください。)
入力が完了すると、~/.config/rclone/rclone.conf の場所に構成ファイルが作成されます。
※Windowsの場合は、%APPDATA%/rclone/rclone.conf
上記の入力内容で作成された構成ファイルの中身は以下の通りです。
[objectstorage]
type = s3
provider = Other
access_key_id = 921c2*******************************acd76
secret_access_key = cX8Xf***********************************AZEg=
region = ap-tokyo-1
endpoint = https://**********.compat.objectstorage.ap-tokyo-1.oraclecloud.com
acl = private
慣れてきたら、最初からこの形式でファイルを作成してしまった方が時間の短縮になるかと思います。
最後に、作成した構成ファイルで無事接続できるか、以下のコマンドで確認してみましょう。
rclole lsd <接続名>:
コマンドを実行して、指定したリージョンのバケット一覧が表示されれば成功です。
Rcloneコマンドの使い方
本記事では、代表的なRcloneコマンドをいくつか紹介していきます。
本記事で紹介している以外のRcloneコマンドはこちらでご確認ください。
①リストの取得
rclone ls (接続名):(バケット名)/(ディレクトリ名)
ネストされたディレクトリ配下のファイルまですべて表示されます。
②ファイルのアップロード・ダウンロード
・ローカルからObject Storageにアップロードする場合
rclone copy (コピー元ファイル) (接続名):(バケット名)/(ディレクトリ名)
copyコマンドの前後のlsコマンドで、file0がコピーされたことがわかります。
・Object Storageからローカルへダウンロードする場合
rclone copy (接続名):(バケット名)/(ディレクトリ名)/(ファイル名) (コピー先ディレクトリ)
copyコマンドの前後のllコマンドで、file7がコピーされたことがわかります。
※コピー元でディレクトリを選択した場合、そのディレクトリ内部の全てのファイルおよび
ディレクトリがコピーされます。
③Object Storage上のファイルの削除
rclone delete (接続名):(バケット名)/(ディレクトリ名)/(ファイル名)
deleteコマンド実行後、file2が削除されていることがわかります。
※削除対象についてディレクトリを選択した場合、選択ディレクトリの中の全てのファイルおよび
ディレクトリが削除されます。
④ソースと宛先の同期
rclone sync (同期元パス) (同期先パス)
このsyncコマンドでは、同期先を、ファイルの削除を含め同期元と同一の状態にします。
同期先のパスが存在しない場合は作成されます。
syncコマンド実行後、testbucket内部がローカル環境と同期していることがわかります。
※場合によってはファイルの削除も行われるため、実行前に--dry-runオプションを指定し、テストをすることを推奨します。
※その他ここでは紹介しきれないコマンドやオプションについては、公式サイトもしくは以下のhelpオプションで確認してください。
rclone <コマンド> --help
おまけ
前回のブログのおまけでは、WinSCPとCloudBerryExplorerについて比較していきました。
今回も同じように、WinSCPでできたことがRcloneでも可能なのか?検証してみました。
★Rcloneでもホームリージョン以外のバケットに接続できる!
WinSCP同様Rcloneでも、ホームリージョン以外のリージョンに作成されたバケットに接続が可能です。
構成ファイル内のregionおよびendpointを該当のリージョン識別子に置き換えればOKです。
★Rcloneでバケットの作成も可能!
以下のコマンドでRcloneからもバケットが作成できます。
rclone mkdir (接続名):(バケット名)
しかし、RcloneでもWinSCP同様、rootコンパートメント配下バケットが作成されてしまいます。
ですので、その後必要に応じてOCIコンソール側でリソースの移動が必要です。
まとめ
今回はRcloneのインストール方法〜Object Storageへの接続・基本的な使用方法についてご紹介していきましたがいかがでしたでしょうか?
普段からCUIに慣れ親しんでいる方にとっては、WinSCPよりも使いやすく感じるのではないでしょうか。
また、Rcloneコマンドの使い方の④で紹介したsyncコマンドについても、バックアップ用途での使用や、cronでまわして常に同期しておく、なんて使い方ができて便利そうですね。
一見すると長くて複雑に見える構成ファイル作成部分も、対話形式になっていてとても楽に設定できたので、ぜひ皆さんも使ってみてはいかがでしょうか。