web-dev-qa-db-fra.com

Dossier de création Google GSutil

Comment pouvez-vous créer un nouveau dossier dans un compartiment dans le stockage Google Cloud à l'aide de la commande gsutil?

J'ai essayé d'utiliser la même commande dans la création du compartiment, mais j'ai quand même eu une erreur

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

Merci!

7
Bongsky

Le concept d'annuaire est abstrait dans Google Cloud Storage. À partir des documents ( Comment fonctionnent les sous-répertoires ):

gsutil fournit l'illusion d'une arborescence de fichiers hiérarchique au sommet de l'espace de nom "plat" pris en charge par le service Google Cloud Storage. Pour le service, l'objet gs: //your-bucket/abc/def.txt n'est qu'un objet qui se trouve avoir des caractères "/" dans son nom. Il n'y a pas de répertoire "abc"; juste un seul objet avec le nom donné.

Vous ne pouvez donc pas "créer" un répertoire comme dans un système de fichiers traditionnel.

12
norbjd

Si vous ne savez pas quels dossiers et objets existent déjà dans le compartiment, vous pouvez créer un nouveau "dossier" avec gsutil en copiant un objet dans le dossier.

>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

Cela ne fonctionnera pas si le répertoire local est vide.

Plus simplement:

>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

Soyez conscient du potentiel de Surprising Destination Subdirectory Naming . Par exemple. si le répertoire cible existe déjà en tant qu'objet. Pour un processus automatisé, une approche plus robuste consisterait à utiliser rsync .

Je ne sais pas s'il est possible de créer un dossier vide avec gsutil. Pour cela, utilisez le bouton Créer un dossier de la console.

5
intotecho

Vous ne pouvez pas créer de dossiers avec gsutils car gsutils ne le prend pas en charge (solution de contournement voir ci-dessous).

Cependant, il est pris en charge via:

  • UI dans le navigateur
  • écrire votre propre client GCS (nous avons écrit notre propre client personnalisé qui peut créer des dossiers)

Ainsi, même si Google a une structure d'espace de nom plate comme l'indique correctement l'autre réponse, il a toujours la possibilité de créer des dossiers uniques en tant qu'objets individuels. Malheureusement, gsutils n'expose pas cela.

(Ugly) workaround with gsutils: Ajoutez un fichier factice dans un dossier et téléchargez ce fichier factice - mais le dossier disparaîtra une fois que vous aurez supprimé ce fichier, sauf si d'autres fichiers de ce dossier sont présents.

0
eci