Gsutilコマンドを使用して、Googleクラウドストレージのバケット内に新しいフォルダーを作成するにはどうすればよいですか?
バケットの作成に同じコマンドを使用しようとしましたが、まだエラーが発生しました
gsutil mb -l us-east1 gs://my-awesome-bucket/new_folder/
ありがとう!
ディレクトリの概念は、Google Cloud Storageでは抽象的です。ドキュメントから( サブディレクトリの仕組み ):
gsutilは、Google Cloud Storageサービスでサポートされる「フラットな」名前空間の上に階層ファイルツリーのような錯覚を与えます。サービスにとって、オブジェクトgs://your-bucket/abc/def.txtは、名前に「/」文字が含まれているオブジェクトです。 「abc」ディレクトリはありません。指定された名前を持つ単一のオブジェクト。
したがって、従来のファイルシステムのようにディレクトリを「作成」することはできません。
バケットに既に存在するフォルダーとオブジェクトが明確な場合は、オブジェクトをフォルダーにコピーすることにより、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ボタンを使用します。
Gsutilsではサポートされていないため、gsutilsでフォルダーを作成することはできません(回避策は以下を参照)。
ただし、次の方法でサポートされています。
したがって、他の答えが正しく指摘しているように、googleがフラットな名前空間構造を持っている場合でも、個々のオブジェクトとして単一のフォルダーを作成する可能性があります。残念ながら、gsutilsはこれを公開していません。
(Uい)gsutilsの回避策:フォルダーにダミーファイルを追加し、このダミーファイルをアップロードします-ただし、フォルダー内に他のファイルが存在しない限り、このファイルを削除するとフォルダーは削除されます。