はじめに
Oracle Cloud の Object Storage サービスには、ディレクトリという概念はありません。ただ、ディレクトリとして疑似的に扱うことが出来るため、その方法をやってみた内容の記事です。
ちなみに、AWSのS3にもディレクトリは存在していませんが、マネージメントコンソールでS3バケットを開いた時の「見た目」だけディレクトリが見えるような仕組みになっています。
Oracle Cloud では、oci cli を使用すると疑似的にディレクトリ構造としてObject Storage を扱うことができます。
Object Storageで Bucket 作成
oci os bucket create --name sugi-bucket --public-access-type NoPublicAccess --storage-tier Standard
疑似ディレクトリ環境を構築
bucket へ ファイルをアップロードする際に、名前にディレクトリ名を付与することで、疑似的にディレクトリを扱うことが出来ます。
以下のような構成を作成していきましょう
- guitar
- gibson
- stratocaster
- telecaster - fender
- lespaul
- jazzmaster
- mustang
- gibson
- base
- fujigen
- precisionbase
- jazzbase
- lakland
- precisionbase
- jazzbase
- fujigen
例えば、guitar/gibson/storatocaster の場合は、以下のように --name
にディレクトリとしたい名前を含めてアップロードします
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/gibson/storatocaster
以下コマンドを打って、すべてのファイルをアップロードします
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/gibson/storatocaster
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/gibson/telecaster
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/fender/lespaul
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/fender/jazzmaster
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name guitar/fender/mustang
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name base/fujigen/precisionbase
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name base/fujigen/jazzbase
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name base/lakland/precisionbase
oci os object put --bucket-name sugi-bucket --file '/home/sugi/test2/test.txt' --name base/lakland/jazzbase
cliを使用して疑似的にディレクトリとして扱う
以下のコマンドで、最も親のディレクトリのlistを取得します。response に prefixes として最も親のディレクトリの一覧が返ってきます。
> oci os object list --bucket-name sugi-bucket --delimiter '/'
{
"prefixes": [
"base/",
"guitar/"
]
}
次に、 guitar ディレクトリ以下の list を取得します
> oci os object list --bucket-name sugi-bucket --delimiter '/' --prefix 'guitar/'
{
"prefixes": [
"guitar/fender/",
"guitar/gibson/"
]
}
次に、guitar/fender 以下の list を取得します
> oci os object list --bucket-name sugi-bucket --delimiter '/' --prefix 'guitar/fender/' 2406ms{
"data": [
{
"md5": "2Oj8otwPiW/Xy0ywAxuiSQ==",
"name": "guitar/fender/jazzmaster",
"size": 5,
"time-created": "2019-02-05T01:28:30.516000+00:00"
},
{
"md5": "2Oj8otwPiW/Xy0ywAxuiSQ==",
"name": "guitar/fender/lespaul",
"size": 5,
"time-created": "2019-02-05T01:28:27.895000+00:00"
},
{
"md5": "2Oj8otwPiW/Xy0ywAxuiSQ==",
"name": "guitar/fender/mustang",
"size": 5,
"time-created": "2019-02-05T01:28:33.158000+00:00"
}
],
"prefixes": []
}
get も可能です
oci os object get --bucket-name sugi-bucket --name guitar/fender/mustang --file mustang
参考URL