web-dev-qa-db-ja.com

Google GSutil create folder

Gsutilコマンドを使用して、Googleクラウドストレージのバケット内に新しいフォルダーを作成するにはどうすればよいですか?

バケットの作成に同じコマンドを使用しようとしましたが、まだエラーが発生しました

gsutil mb -l us-east1 gs://my-awesome-bucket/new_folder/

ありがとう!

7
Bongsky

ディレクトリの概念は、Google Cloud Storageでは抽象的です。ドキュメントから( サブディレクトリの仕組み ):

gsutilは、Google Cloud Storageサービスでサポートされる「フラットな」名前空間の上に階層ファイルツリーのような錯覚を与えます。サービスにとって、オブジェクトgs://your-bucket/abc/def.txtは、名前に「/」文字が含まれているオブジェクトです。 「abc」ディレクトリはありません。指定された名前を持つ単一のオブジェクト。

したがって、従来のファイルシステムのようにディレクトリを「作成」することはできません。

12
norbjd

バケットに既に存在するフォルダーとオブジェクトが明確な場合は、オブジェクトをフォルダーにコピーすることにより、gsutilで新しい「フォルダー」を作成できます。

>mkdir test
>touch test/file1
>gsutil cp -r test gs://my-bucket
Copying file://test\file1 [Content- 
Type=application/octet-stream]...
/ [1 files][    0.0 B/    0.0 B]
Operation completed over 1 objects.

>gsutil ls gs://my-bucket
gs://my-bucket/test/

>gsutil ls gs://my-bucket/test
gs://my-bucket/test/file1

ローカルディレクトリが空の場合は機能しません。

もっと簡単に:

>touch file2
>gsutil cp file2 gs://my-bucket/new-folder/
Copying file://test\file2 [Content- ...

>gsutil ls gs://my-bucket/new-folder
gs://my-bucket/new-folder/file2

Surprising Destination Subdirectory Naming の可能性に注意してください。例えば。ターゲットディレクトリがすでにオブジェクトとして存在する場合。自動プロセスの場合、より堅牢なアプローチは rsync を使用することです。

Gsutilで空のフォルダーを作成できるかどうかはわかりません。そのためには、コンソールのCreate Folderボタンを使用します。

5
intotecho

Gsutilsではサポートされていないため、gsutilsでフォルダーを作成することはできません(回避策は以下を参照)。

ただし、次の方法でサポートされています。

  • ブラウザのUI
  • 独自のGCSクライアントを作成します(フォルダーを作成できる独自のカスタムクライアントを作成しました)

したがって、他の答えが正しく指摘しているように、googleがフラットな名前空間構造を持っている場合でも、個々のオブジェクトとして単一のフォルダーを作成する可能性があります。残念ながら、gsutilsはこれを公開していません。

(Uい)gsutilsの回避策:フォルダーにダミーファイルを追加し、このダミーファイルをアップロードします-ただし、フォルダー内に他のファイルが存在しない限り、このファイルを削除するとフォルダーは削除されます。

0
eci