LoginSignup
3
2

More than 3 years have passed since last update.

Oracle Cloud オブジェクトストレージでディレクトリとして疑似アクセス (cli)

Last updated at Posted at 2019-02-05

はじめに

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
  • base
    • fujigen
      • precisionbase
      • jazzbase
    • lakland
      • precisionbase
      • jazzbase

例えば、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

3
2
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
3
2