Google GSutil создать папку

Как создать новую папку внутри корзины в облачном хранилище Google с помощью команды gsutil?

Я пытался использовать ту же команду при создании корзины, но все равно получил ошибку

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

Спасибо!

5 ответов

Концепция каталога является абстрактной в 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://ogh-migration-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. Например, если целевой каталог уже существует как объект. Для автоматизированного процесса более надежным подходом было бы использование rsync.

Я не знаю, возможно ли создать пустую папку с помощью gsutil. Для этого используйте кнопку " Создать папку" на консоли.

Вы не можете создавать папки с gsutils, так как gsutils не поддерживает его (обходной путь см. Ниже).

Тем не менее, это поддерживается через:

  • Пользовательский интерфейс в браузере
  • написать свой собственный клиент GCS (мы написали наш собственный клиент, который может создавать папки)

Таким образом, даже если у Google есть плоская структура пространства имен, как правильно указывает другой ответ, у него все еще есть возможность создавать отдельные папки как отдельные объекты. К сожалению, gsutils не раскрывает это.

(Ужасно) Обходной путь с помощью gsutils: добавьте фиктивный файл в папку и загрузите этот фиктивный файл - но папка исчезнет, ​​как только вы удалите этот файл, если другие файлы в этой папке отсутствуют.

Скопировано из справки Google Cloud:

Скопируйте объект в папку в корзине. Используйте команду gsutil cp, чтобы создать папку и скопировать в нее изображение:

gsutil cp gs: //my-awesome-bucket/kitten.png gs://my-awesome-bucket/just-a-folder/kitten3.png

Это работает.

Вы не можете создать папку с помощью gsutil на GCS.

Но вы можете скопировать существующую папку с помощью gsutil в GCS.

Чтобы скопировать существующую папку с помощью gsutil в GCS , папка не должна быть пустой, и необходим флаг «-r» , как показано ниже, иначе вы получите сообщение об ошибке, если папка пуста или вы забыли флаг -r :

      gsutil cp -r <non-empty-folder> gs://your-bucket
      // "-r" is needed for folder

Вы не можете создать пустую папку с мб

Другие вопросы по тегам